正則表達(dá)式-1.字符匹配

1. 匹配單個(gè)字符

1.1 匹配純文本

在原始文本中查找目標(biāo)文本

/as/.test("asd"); // true
/ad/.test("asd"); // false
多個(gè)匹配結(jié)果

一般正則表達(dá)式默認(rèn)匹配第一個(gè)結(jié)果,提供不同的匹配模式供選擇。

"asdasd".match(/as/g); // ["as", "as"]
大小寫

一般正則表達(dá)式會(huì)提供一個(gè)機(jī)制,選擇區(qū)分或者不區(qū)分大小寫。

/A/.test("asd"); // false
/A/i.test("asd"); // true

1.2 匹配任意字符

點(diǎn)號(hào)(.)可以匹配任何一個(gè)單個(gè)字符。

/a.d/.test("asd"); // true
/a.d/.test("afd"); // true

1.3 匹配特殊字符

對(duì)于點(diǎn)號(hào),星號(hào)等在正則表達(dá)式中有特殊含義的字符,需要在前面加一個(gè)反斜杠(\)來進(jìn)行轉(zhuǎn)移。
“\“本身就是”\“

/a\.d/.test("asd"); // false
/a\.d/.test("a.d"); // true

2.匹配一組字符

字符集合用來匹配特定的字符和字符區(qū)間。

2.1 匹配一組字符中的一個(gè)

用中括號(hào)([])來定義字符集合,中括號(hào)間的字符都是該集合的組成部分,字符集和的匹配結(jié)果是能夠和集合中的任意一個(gè)成員相匹配的文本。

/[abc]/.test("asd"); // true
/[abc]/.test("qsd"); // /false

2.2 字符集合區(qū)間

用連字符(-)來定義字符區(qū)間。

/[0-9]a/.test("2a"); // true
/[a-z]a/.test("aa"); // true

字符區(qū)間的首尾字符可以使ASCⅡ字符表里的任意字符,且匹配是按照字符表編碼的決定的。需要注意連字符兩邊的字符順序。

/[9-1]a/.test("2a"); // error

連字符只在中括號(hào)之間有效,在其他地方作為普通字符,不需要加反斜杠。

/-[a-z]/.test("-a"); // true

2.3 取非匹配

用元字符^對(duì)一個(gè)字符集合進(jìn)行取非操作。即匹配字符集合以外的字符。

/[^a-z]/.test("asd"); // fasle

注意:雖然^放在方括號(hào)里面,但是是作用于整個(gè)字符區(qū)間的。

3. 元字符匹配

3.1 匹配元字符自身

用反斜杠(\)轉(zhuǎn)義。

/\./.test("."); // true

3.2 匹配空白字符

正則表達(dá)式中用來表示空白字符的元字符如下:

元字符 說明
[\b] 回退
\f 換頁符
\n 換行符
\r 回車符
\t 制表符
\v 垂直制表符

注意:不同操作系統(tǒng)中對(duì)于文本行結(jié)束,文本結(jié)束的表示不同。例如,在Windows用\r\n表示文本行結(jié)束。Unix和Linxu系統(tǒng)用一個(gè)換行符來結(jié)束文本行。

3.3 匹配特定字符類型

3.3.1 匹配數(shù)字,非數(shù)字

元字符 說明
\d 任何一個(gè)數(shù)字字符(等價(jià)于[0-9])
\D 任何一個(gè)非數(shù)字字符(等價(jià)于[^0-9])
/\d/.test("1") ; // true
/\D/.test("1") ; // false

可以看到用小寫d匹配數(shù)字,大寫D匹配相反的非數(shù)字,后面的其他類元字符也是如此。

3.3.2 匹配字母、數(shù)字和下劃線,非字母、數(shù)字和下劃線

元字符 說明
\w 任何一個(gè)字母,數(shù)字,下劃線(等價(jià)于[a-zA-Z0-9_])
\W 任何一個(gè)非字母,數(shù)字,下劃線(等價(jià)于[^a-zA-Z0-9_])
/\w/.test("a"); \\ true
/\W/.test("a"); \\ false

3.3.3 匹配空白字符,非空白字符

元字符 說明
\s 任何一個(gè)空白字符(等價(jià)于[\f\n\r\t\v])
\S 任何一個(gè)非空白字符(等價(jià)于[^\f\n\r\t\v])
/\s/.test(" "); // true
/\S/.test("a"); // true

注意:退格字符[\b]元字符不在類元字符\s的覆蓋范圍內(nèi)。

3.3.4 匹配十六進(jìn)制或者八進(jìn)制數(shù)值

1. 使用十六進(jìn)制匹配

正則表達(dá)式中用前綴\x來表示十六進(jìn)制數(shù)值。
例如,\x0A對(duì)應(yīng)于ASCⅡ字符10(換行符),等價(jià)于\n 。

2.使用八進(jìn)制匹配

正則表達(dá)式用用前綴\0表示八進(jìn)制數(shù)值。
例如,\011表示ASCⅡ字符9(制表符),等價(jià)于\t。

3.4 POSIX字符類

很多語言的正則表達(dá)式支持POSIX表達(dá)式。
注意:JavaScript不支持。

字符類 說明
[:alnum:] 任何一個(gè)字母或數(shù)字(等價(jià)于[a-zA-Z0-9])
[:alpha:] 任何一個(gè)字母(等價(jià)于[a-zA-Z])
[:blank:] 空格或者制表符(等價(jià)于[ \t])
[:cntrl:] ASCⅡ控制字符(ASCⅡ0到31,再加上ASCⅡ127
[:digit:] 任何一個(gè)數(shù)字(等價(jià)于[0-9])
[:graph:] 任何一個(gè)可打印字符,不包括空格
[:lower:] 任何一個(gè)小寫字母(等價(jià)于[a-z])
[:print:] 任何一個(gè)可打印字符
[:punct:] 既不屬于[:alnum:]也不屬于[:cntrl:]的任何一個(gè)字符
[:space:] 任何一個(gè)空白字符,包括空格(等價(jià)于[ \t\r\n\v\f])
[:upper:] 任何一個(gè)大寫字母(等價(jià)于[A-Z])
[:xdigit:] 任何一個(gè)十六進(jìn)制數(shù)字(等價(jià)于[a-fA-F0-9])

下一篇:重復(fù)匹配

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容