表示法
描述正規表示式示例
literal
匹配文字字串的字面值literal
aaare1|re2
匹配正規表示式re1或re2
aaa|bbb
.匹配任何字元(除了\n)
b.b^
匹配字串起始部分
^/bin
$匹配字串結束部分
*.sh$
*匹配0次或者多次前面出現的正規表示式
[0-9]*
+匹配1次或者多次前面出現的正規表示式
[0-9]+
?匹配0次或者1次前面出現的正規表示式
zoo?
匹配n次前面出現的正規表示式
[0-9]
匹配m~n次前面出現的正規表示式
[0-9]
[…]匹配來自字符集的任意乙個字元
[13579]
[…x-y…]
匹配0~9範圍中的任意乙個字元
[0-9]
[^…]
不匹配此字符集**現的任何乙個字元,包括某一範圍的字符集
[abc][0-9a-za-z]
(*|+|?|{})?
用於匹配上面頻繁出現/重複出現符號的非貪婪版本(*、+、?、{})
.*?[a-z]]
(…)匹配封閉的正規表示式,然後另存為子組
([0-9])?,f(oo|o)bar
表示法描述
正規表示式示例
\d匹配任何十進位制數字,與[0-9]一致,(\d與\d相反)
\d+\w
匹配任何字母數字字元,與[0-9a-za-a]一致,(\w與之相反)
\w+\s
匹配任何空格字元,與[\n\r\t\r\v\f] 形同,(\s與之相反)
\s+\b
匹配任何單詞邊界,(\b與之相反)
\bthe\b
\n儲存已儲存的子組n(參看上面的(…))
price:\16
\c逐字匹配任何特殊字元c(即,僅按照字面意思匹配,不匹配特殊含義)
\\,\*,\.
\a(\z)
匹配字串的起始(結束)(另見上面的^和$)
\addd
表示法描述
正規表示式示例
(?ilmsux)
在正規表示式中嵌入乙個或者多個特殊"標記"引數(或者通過 函式/方法)
(?x),(?im)
(?:…)
表示乙個匹配不用儲存的分組
(?:\w+.)*
(?p)
像乙個僅由name標識而不是數字id標識的正則分組匹配
(?p)
(?p=name)
在同一字串中匹配由(?p)分組之前的文字
(?p=data)
(?#…)
表示注釋,所有內容都被忽略
(?#comment)
(?=…)
匹配條件是如果…出現的之後的位置,而不使用輸入字串;稱作正向前視斷言
(?=.com)
(?!..)
匹配條件是如果…不出現的之後的位置,而不使用輸入字串;稱作負向前視斷言
(?!.net)
(?<=…)
匹配條件是如果…出現的之前的位置,而不使用輸入字串;稱作正向後視斷言
(?<=800-)
(?匹配條件是如果…不出現的之前的位置,而不使用輸入字串;稱作正向後視斷言
(?(?(id/name)y|n)
如果分組所提供的id或者name存在,就返回正規表示式的條件匹配y,如果不存在,就返回n;|n是可選項
(?(1)y|x)
這是內聯匹配模式,通常用內聯匹配模式代替使用列舉值regexoptions指定的全域性匹配模式,寫起來更簡潔。
(?i) 表示所在位置右側的表示式開啟忽略大小寫模式
(?s) 表示所在位置右側的表示式開啟單行模式。
注意:(?s)通常在匹配有換行的文字時使用
(?m) 表示所在位置右側的表示式開啟指定多行模式。
更改 ^ 和 $ 的含義,以使它們分別與任何行的開頭和結尾匹配,而不只是與整個字串的開頭和結 尾匹配。
注意:(?m)只有在正規表示式中涉及到多行的「^」和「$」的匹配時,才使用multiline模式。
上面的匹配模式可以組合使用,比如(?is),(?im)。
另外,還可以用(?i:exp)或者(?i)exp(?-i)來指定匹配的有效範圍。
m修飾符規定正規表示式可以執行多行匹配。
m修飾符的作用是修改^和$在正規表示式中的作用,讓它們分別表示行首和行尾。
在預設狀態下,乙個字串無論是否換行只有乙個開始^和結尾$,如果採用多行匹配,那麼每乙個行都有乙個^和結尾$。
ie瀏覽器支援此元字元。
火狐瀏覽器支援此元字元。
谷歌瀏覽器支援此元字元。
例項**:
例項一:
var str="this is an\n antzone good";
var reg=/an$/;
console.log(str.match(reg));
以上**不能夠匹配字串"an",儘管"an"後面已經換行了,但是並沒有採用多行匹配,所以不是字串行的結尾。
例項二:
var str="this is an\n antzone good";
var reg=/an$/m;
console.log(str.match(reg));
以上**可以匹配字串"an",因為採用了多行匹配。
例項三:
var reg = /^b/;
var str = 'test\nbbs';
execreg(reg,str);
匹配失敗,因為字串的開頭沒有b字元。但是加上m修飾符之後:
例項四:
var reg = /^b/m;
var str = 'test\nbbs';
execreg(reg,str);
匹配到b,因為加了m修飾符之後,^已經表示行首,由於bbs在字串第二行的行首,所以可以成功地匹配。
參考:[1]: python核心程式設計(第三版) [美]wesley chun著,孫波翔,李斌,李晗 譯
[2]:
[3]:
正規表示式符號
字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
正規表示式符號
字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
正規表示式符號
字元 描述 標記下乙個字元是特殊字元或文字。例如,n 和字元 n 匹配。n 則和換行字元匹配。序列 和 匹配,而 則和 匹配。匹配輸入的開頭。匹配輸入的末尾。匹配前乙個字元零或多次。例如,zo 與 z 或 zoo 匹配。匹配前乙個字元一次或多次。例如,zo 與 zoo 匹配,但和 z 不匹配。匹配前...