正則表達式的一(yī)些匹配規則

時間:2020-07-18 作者:管理員(yuán) 點擊:639

一(yī),字面量字符和元字符


大(dà)部分(fēn)字符在正則表達式中(zhōng),就是字面的含義,比如 /a/ 匹配 a, /b/ 匹配b。這種隻表示它字面量含義的被稱爲字面量字符。

除了字面量,還有一(yī)些字符有特殊含義,不代表字面意思,被稱爲元字符

1,點字符(.)

點字符匹配除回車(chē)(\r)、換行(\n)、行分(fēn)隔符(\u2028)和分(fēn)段符(\u2029)之外(wài)的所有字符     注:碼點大(dà)于0xFFFF的Unicode字符不能被匹配,因爲會被認爲是兩個字符。

2,位置字符

^ 表示字符串的開(kāi)始位置,  $ 表示字符串的結束位置。

3,選擇符(|)

豎線符号在正則中(zhōng)表示 ‘或關系’ , 即匹配其中(zhōng)之一(yī)即可。

二,轉義符


正則中(zhōng)那些有特殊含義的元字符,如果要匹配它們本身,就要在前面加反斜杠。 比如要匹配 +, 就必須寫成 \+;

在正則中(zhōng),需要反斜杠轉義的一(yī)共有12個字符: ^ .  [ $ ( ) | * + ? { \\               注:如果使用RegExp方法生(shēng)成正則,轉義需要加兩個斜杠,因爲字符串需要先轉義一(yī)次。

三,特殊字符


\r 匹配回車(chē)符

\t 匹配制表符 tab

\n 匹配換行符

\v 匹配垂直制表符

\f  匹配換頁符

\0 匹配null字符

四,字符類


字符類表示有一(yī)系列字符可供選擇,隻要匹配其中(zhōng)一(yī)個就可以。所有可供選擇的字符放(fàng)在中(zhōng)括号内,比如[abc] 表示 a b c之中(zhōng)任選一(yī)個。

1,脫字符(^)

如果方括号内的第一(yī)個字符爲 ^ , 則表示取反。  [^]表示匹配一(yī)切字符。

2,連字符(-)

對于連續序列的字符,可以用-來進行簡寫。 a-z  0-9 A-Z  -u4e00-\u9fa5

五,預定義模式


\d 匹配0-9的數字, 相當于[0-9]

\D 匹配非0-9的字符。 相當于[^0-9]

\w 匹配任意字母數字下(xià)劃線。 相當于[0-9a-zA-Z_]

\W 相當于\w取反

\s 匹配空格(包括換行符、制表符、空格符), 相當于[ \t\r\n\v\f]

\S 相當于\s取反

\b 匹配單詞邊界

\B 匹配非單詞邊界,即在詞的内部

六,重複類


模式的匹配次數,使用大(dà)括号{ }表示,{n}表示重複n次,{n,}表示至少重複n次,{n,m}表示重複不少于n次,不多于m次。

七,量詞符


量詞符用來設定某個模式出現的次數。

問号表示某個模式出現0次或1次, 等同于{0, 1};

*  星号表示出現0次或多次,等同于{0, }

+ 加号表示出現1次或多次, 等同于{1, }

八,貪婪模式


量詞符默認情況下(xià)都是最大(dà)可能匹配,即匹配到不能匹配爲止,這種模式就叫貪婪模式

/a+/ 表示匹配1個或多個a,那麽到底會匹配幾個a呢? 因爲默認的是貪婪模式,所以會一(yī)直匹配到後面不是a爲止。

如果想将貪婪模式改爲非貪婪模式,可以在量詞後面加一(yī)個問号。這時候一(yī)旦滿足條件,就不再往下(xià)匹配了。

*?表示某個模式出現0次或者多次,采用非貪婪模式

+?表示模式出現1次或者多次,采用非貪婪模式

九,修飾符


g 表示全局匹配

i 表示忽略大(dà)小(xiǎo)寫

m 表示多行模式。會修改^和$的行爲。 加了m修飾符後,^和$會識别換行符( \n )

十,組匹配


1,正則中(zhōng)的括号()表示分(fēn)組匹配,括号中(zhōng)的模式表示分(fēn)組中(zhōng)的内容。

在正則表達式内部, 還可以使用 \n 來引用括号匹配的内容, n是從1開(kāi)始,表示對應順序的括号

/(.)b(.)\1b\2/.test('abcabc');           \1匹配了第一(yī)個括号的a, \2匹配了第二個括号的c

2,非捕獲組

(?:x)稱爲非捕獲組,表示不返回該組匹配的内容。

3,先行斷言

x(?=y)稱爲先行斷言。x隻有在y前面才匹配,y不計入匹配結果中(zhōng)。

4,先行否定斷言

x(?!y) 爲先行否定斷言。 x隻有不在y前面才匹配。

  用通俗的語句來解釋上面的這些:

x(?! y): x隻有不在y前面才匹配

x(?=a):  表示在a的前面 才匹配。

x(?<= a): 表示a的後面才匹配

x(?<! a): 表示需要不匹配某個模式,  與 (?!a)相反

 

返回列表
在線溝通

Are you interested in ?

感興趣嗎(ma)?

有關我(wǒ)(wǒ)們服務的更多信息,請聯系

136 7365 2363(同微信) 13140187702

鄭州網站建設鄭州網站設計鄭州網站制作鄭州建站公司鄭州網站優化--聯系索騰

與我(wǒ)(wǒ)們合作

鄭州網站建設鄭州網站設計鄭州網站制作鄭州建站公司鄭州網站優化--與索騰合作,您将會得到更成熟、專業的網絡建設服務。我(wǒ)(wǒ)們以客戶至上,同時也相互挑戰,力求呈現最好的品牌建設成果。

業務咨詢熱線:

136 7365 2363

TOP

QQ客服

在線留言