一、常用正規表示式關鍵字
".":任意字元"*":任意個數
"+":任意個數,至少乙個
"?":0-1個
"\d":任意個數數字,至少乙個 digit
"\w":任意數字字母,下劃線 word
"\s":任意空白,空格,tab,換行符,至少乙個 space
\:轉義符
:匹配一些字元
-:例如0-5,從幾到幾
^:任意的非字元
\s:所有非空白
:字元出現次數等4
:字元出現2-4次
:至少2個
$:字串的邊界
\b:單詞的邊界,前邊界或者後邊界
^和$一起使用,是匹配最初和最後
(|)正規表示式分組
\1反向引用,正規表示式記住的部分
(?=\s) 斷言的語法,匹配左側或者右側,符合條件的
二、js中正規表示式使用的常用語法:
上述例子為正規表示式的一種常用方式,正規表示式在js中主要使用場景為:
1、test:校驗字串是否符合要求格式,主要在驗證時候使用,關鍵字為pattern.test(str),返回結果為true,或者false
var pattern=/^\d+$/; //定義正規表示式
var str=123; //
定義字串
alert(pattern.test(str)) //
使用正規表示式校驗字串
2、exec:獲取字串中與正規表示式匹配的內容
var pattern=/^(?:\s*(<[\w\w]+>)[^>]*|#([\w-]*))$/; //正規表示式,匹配以空格開始,帶有<>標籤的內容
var str=' #ab' //
測試字串
alert(pattern.exec(str)) ;//
#ab,,
根據()進行分組,匹配結果為乙個陣列a,a[0]為最長匹配到的字串,a[1]為第乙個陣列,a[2]為第二個小括號匹配的內容,依次類推,如果某個小括號內的匹配不顯示到陣列中,需要加?:進行過濾,具體含義參考?:的用法。
3、replace:對資料進行區域性或者全域性替換
var str='8google8 8google8 8google8';var pattern=/8(.*)8/; //
貪婪模式,匹配到的為整個字串google8 8google8 8google
var pattern=/8(.*?)8/; //
非貪婪模式,替換結果為google8google8 8google8
var pattern=/8(.*?)8/g; //
非貪婪模式,g表示全域性替換,結果為googlegooglegoogle
alert(str.replace(pattern,'$1'));
將字串匹配部分替換為為指定的字串,其中可以根據分組,使用$1..保留源字串的部分內容。
4、match,與exec使用方法類似,不過exec是正則的方法,match是str的方法,因此使用上為str.match(pattern),其他區別如下例子:
var str='once two three';var pattern=/\s+/g;//
全域性匹配的正則
alert(str.match(pattern))//
結果為乙個陣列,one,two,three
alert(pattern.exec(str))//
匹配結果為one
5、search,使用
/*使用search 來查詢匹配資料
*/var pattern = /box/ig;
var str = 'this is a box!,that is a box too';
alert(str.search(pattern));
//查詢到返回位置,否則返回-1
6、split
/*使用split 拆分成字串陣列
*/var pattern = / /ig;
var str = 'this is a box!,that is a box too';
alert(str.split(pattern));
//將空格拆開分組成陣列
三、幾個重要概念
1、貪婪模式和非貪婪模式
在正規表示式匹配過程中,預設匹配最多的字段,例如以/8.*8/進行匹配'8google8 8google8 8google8',由於.*可以匹配任意字串,所以預設為以收尾為8除去後,匹配盡可能多的要素,所以結果為'8google8 8google8 8google8',如果要改為遇到第乙個8就截止,則需要改為/8.*?8/,表示不貪婪,匹配結果為8google8。
在設計模式中模擬單例模式的餓漢模式和懶漢模式,餓漢就是很飢餓,盡可能多的需要食物,懶漢就是直到需要的時候,才去申請食物。
2、錨字元
在正規表示式有些特殊字元,有具體的含義
^:表示此次匹配必須從行首開始匹配
$:此次匹配的結尾必須與行尾匹配
\b:匹配字串邊界,以下表示式可以匹配'google aaa',但無法匹配』googleaaa'
var str= "google aaa";var pattern=/google\b/alert(pattern.test(str))
3、正規表示式分組概念
在正規表示式中,可以使用()進行分組,分組在exec,match等函式中會返回匹配到的整個字串和分組的情況,使用$1或者\1等可以獲取某個指定分組
4、可選修飾詞 /\w/igm
i 忽略大小寫
g 全域性匹配
m 多行匹配
5、問號"?"的使用,問號作為正規表示式特殊字元有以下幾種使用方法:
5.1:當做真實問號使用 \?
5.2:表示0次或1次 \w? 表示0-1次字元
5.3:表示非貪婪模式, \w*? 表示非貪婪的匹配任意多個字元
5.4:表示非捕獲?:,goo(?:.*)8 使用exec等捕獲時.*內容不會作為單獨分組
5.5 表示前瞻捕獲?= goo(?=gle) //goo 後面必須跟著gle 才能捕獲
舉乙個極端的例子
var str= "gaoo?gle aaa";var pattern=/(?:ga??oo\?(?=gle))/ //
此正則中有五個問號,含義各不相同:1、整個分組不會**捉,2、表示g後又0個或者1個a,3表示對a採用非貪婪匹配4、表示匹配實際的?號,5表示整個匹配獲取必須以gle結尾,但又不包括gle
alert(pattern.exec(str)) //
匹配結果:gaoo?
js 正規表示式彙總
1.正規表示式可以從字串中 查詢 需要的 資料 2.正規表示式 可以從字串中 獲取 需要的 資料 3.正規表示式 可以從字串中 替換 需要的 資料 1.abc 匹配 abc 字串 let regex1 new regexp abc 2.中括號中可以寫多個任意字元,代表只匹配乙個字元 let rege...
正規表示式彙總
1 校驗密碼強度 密碼的強度必須是包含大小寫字母和數字的組合,不能使用特殊字元,長度在8 10之間。d a z a z 2.校驗中文 字串僅能是中文。u4e00 u9fa5 3.由數字 26個英文本母或下劃線組成的字串 w 4.校驗e mail 位址 同密碼一樣,下面是e mail位址合規性的正則檢...
正規表示式彙總
一 校驗數字的表示式 數字 0 9 n位的數字 d 至少n位的數字 d m n位的數字 d 零和非零開頭的數字 0 1 9 0 9 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 帶1 2位小數的正數或負數 d d 正數 負數 和小數 d d 有兩位小數的正實數 0 9 0 9 有1 3位小...