技術學習 js正規表示式彙總

2022-07-07 06:15:12 字數 3526 閱讀 5837

一、常用正規表示式關鍵字

".":任意字元

"*":任意個數

"+":任意個數,至少乙個

"?":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位小...