正規表示式

2022-09-12 20:12:14 字數 3204 閱讀 5447

正規表示式是用於進行文字匹配的工具,有可能字串裡有不止乙個部分滿足給定的正規表示式,這時每乙個這樣的部分被稱為乙個匹配

表1.常用的特殊**

**/語法

說明

.匹配除換行符以外的任意字元

\w匹配字母或數字

\s匹配任意的空白符

\d匹配數字

\b匹配單詞的開始或結束

^匹配字串的開始

$匹配字串的結束

表2.常用的量詞

**/語法

說明

*重複零次或更多次

+重複一次或更多次

?重複零次或一次

重複n次

重複n次或更多次

重複n到m次

表3.常用的反義**

**/語法

說明

\w匹配任意不是字母和數字的字元

\s匹配任意不是空白符的字元

\d匹配任意非數字的字元

\b匹配不是單詞開頭或結束的位置

[^x]

匹配除了x以外的任意字元

[^aeiou]

匹配除了aeiou這幾個字母以外的任意字元

注意:^在中括號」」中被使用的話就是表示字元類的否定,如果不是的話就是表示限定開頭

例如:^[a-z]表示的是以小寫字母開始,[^a-z]表示匹配非小寫字母

tips:在正規表示式中有單行和多行模式

多行模式:multiline修飾的是^與$,就是說multiline為false的時候,^只能匹配字串開頭,$只能匹配字串結尾,multiline為true的時候,^可以匹配字串開頭(字串的開始位置),也可以匹配行的開頭(即換行符\n之後的位置),$可以匹配字串結尾(字串的結束位置), 也可以匹配行的結尾(即換行符\n之前的位置),換句話說,匹配每一行

單行模式:(開啟則「 . 」號會匹配所有字元,不開啟則匹配除了換行符之外的所有字元)singleline修飾的是'.',就是說singleline為true的時候匹配的是所有字元(包括\n),singleline為false的時候,匹配的是除\n外的所有字元。

這是一段測試字串

1)正規表示式為.+

1.單行模式

2.多行模式

3.單行模式+多行模式 <==>multiline=truesingleline=true因為正規表示式中沒有^$所以預設是整個字串匹配所以只會有乙個匹配結果(和單行匹配結果一致)

4.無模式 <==>multiline=falsesingleline=false因為正規表示式中沒有^$並且"."不能匹配\n所以匹配三處"abab1\n\nabca\n123ac\n"(這個代表整個字串)

2)正規表示式為^.+$

1.單行模式

2.多行模式

123ac\n"(這個代表按行匹配)

3.單行模式+多行模式 <==>multiline=truesingleline=true這就意味著'.'匹配換行,並且按行匹配

"abab1\n

\nabca\n

123ac\n"(這個代表按行匹配)

也許你會問這和上面有什麼不同,那麼我們把正規表示式換成[ab]\w+和^[ab]\w+$來試下單行模式+多行模式

其他幾種情況結果都一樣

原因:[ab]\w+沒有^$沒有'.',無論是單行模式還是多行模式,結果都是整個字串去匹配[ab]\w+,^[ab]$由於沒有'.',無所謂單行模式,此時如果不是多行模式,那麼是整個字串去匹配,如果是多行模式,那麼是逐行去匹配

4.無模式

如果覺得弄清楚的話自己可以看看a.*a、^a.*a$與樣例中的匹配情況

js中沒有單行模式!!!!!!!!!!!只有三種物件模式:g (全文查詢出現的所有 pattern),i (忽略大小寫),m

(多行查詢)

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...