正規表示式是一種文字模式,包括普通字元(例如,a 到 z 之間的字母)和特殊字元(稱為「元字元」)。模式描述在搜尋文字時要匹配的乙個或多個字串。
首先推薦幾個正規表示式編輯器
debuggex :
pyregex:
regexper:
說明:正規表示式通常用於兩種任務:檢查文字中是否含有指定的特徵詞
找出文中匹配特徵詞的位置
從文字中提取資訊,比如:字串的子串
修改文字
1.驗證,2.搜尋/替換。
用於驗證時,通常需要在前後分別加上^和$
,以匹配整個待驗證字串;搜尋/替換時是否加上此限定則根據搜尋的要求而定,此外,也有可能要在前後加上\b
而不是^和$
。此表所列的常用正規表示式,除個別外均未在前後加上任何限定,請根據需要,自行處理。
在構造正規表示式之後,就可以象數學表示式一樣來求值,也就是說,可以從左至右並按照乙個優先權順序來求值。 下表從最高優先順序到最低優先順序列出各種正規表示式操作符的優先權順序:
操作符描述
\轉義符
(), (?:), (?=),
圓括號和方括號
*, +, ?, , ,
限定符^, $, \anymetacharacter
位置和順序
構造正規表示式的方法和建立數學表示式的方法一樣。也就是用多種元字元與操作符將小的表示式結合在一起來建立更大的表示式。
可以通過在一對分隔符之間放入表示式模式的各種元件來構造乙個正規表示式。
對 jscript 而言,分隔符為一對正斜槓 (/) 字元。例如:
/expression/
對 vbscript 而言,則採用一對引號 ("") 來確定正規表示式的邊界。例如:
"expression"
正規表示式的元件可以是單個的字元、字元集合、字元範圍、字元間的選擇或者所有這些元件的任意組合。//匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線
var re =new regexp("^[a-za-z][a-za-z0-9_]$");
if(re.test(aaaa))else
匹配中文字元的正規表示式:[\u4e00-\u9fa5]
評注:匹配中文還真是個頭疼的事,有了這個表示式就好辦了
匹配雙位元組字元(包括漢字在內):[^\x00-\xff]
評注:可以用來計算字串的長度(乙個雙位元組字元長度計2,ascii字元計1)
匹配空白行的正規表示式:\n\s*\r
評注:可以用來刪除空白行
匹配html標記的正規表示式:]*>.*?|<.>
評注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於複雜的巢狀標記依舊無能為力
匹配首尾空白字元的正規表示式:^\s*|\s*$
評注:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式
評注:表單驗證時很實用
評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求
匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-za-z][a-za-z0-9_]$
評注:表單驗證時很實用
匹配國內**號碼:\d-\d|\d-\d
評注:匹配形式如 0511-4405222 或 021-87888822
匹配身份證:\d|\d
評注:中國的身份證為15位或18位
下表來自msdn,包含了元字元的完整列表以及它們在正規表示式上下文中的行為:
評注:處理大量資料時有用,具體應用時注意修正^[1-9]\d*$ //匹配正整數
^-[1-9]\d*$ //匹配負整數
^-?[1-9]\d*$ //匹配整數
^[1-9]\d*|0$ //匹配非負整數(正整數 + 0)
^-[1-9]\d*|0$ //匹配非正整數(負整數 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點數
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負浮點數
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點數
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負浮點數(正浮點數 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(負浮點數 + 0)
評注:最基本也是最常用的一些表示式^[a-za-z]+$ //匹配由26個英文本母組成的字串
^[a-z]+$ //匹配由26個英文本母的大寫組成的字串
^[a-z]+$ //匹配由26個英文本母的小寫組成的字串
^[a-za-z0-9]+$ //匹配由數字和26個英文本母組成的字串
^\w+$ //匹配由數字、26個英文本母或者下劃線組成的字串
JavaScript 學習總結
初學起來覺得知識點很多很雜,很多框架的構建都加入了自己的主觀色彩,沒有完全按照教程的來總結,所以難免有些地方看起來會很奇怪。剛開始都不是完美的,慢慢來,不斷地去完善自己。基本變數型別 4種 複雜變數型別 2種 typeof 檢視變數型別 定義乙個物件 var person 清空乙個物件 var pe...
JavaScript學習總結1
我是切割線 的開始 利用prototype屬性能夠加入公有屬性和方法 function myconstructor2 宣告建構函式,能夠使用物件字面量語法來向prototype屬性中加入全部公有成員 myconstructor2.prototype methodb function var myco...
JavaScript的學習總結
隨著一階段的結束,開始二階段js的學習。首先,要學會接受適應這個轉變,積極調整個人狀態。js更加注重邏輯思維,重在理解練習。學習過程中遇到苦難不足為奇,這個過程本就不是一帆風順的。不能因為遇到一點點苦難就隨便想著放棄,如此,即背叛了來千鋒學習的初衷。拼搏到無能為力,堅持到感動自己 這句話牢記心中,落...