常用的正則表達式

微軟-正則表達式語法
菜鳥教程-正則

特殊字符

若要匹配這些特殊字符之一瘤袖,必須首先轉義字符衣摩,即,在字符前面加反斜杠字符 \捂敌。 例如艾扮,若要搜索“+”文本字符,可使用表達式\+占婉。

元字符 行為
* 零次或多次匹配前面的字符或子表達式泡嘴。等效于 {0,}。
+ 一次或多次匹配前面的字符或子表達式逆济。等效于 {1,}酌予。
? 零次或一次匹配前面的字符或子表達式磺箕。等效于 {0,1}。
^ 匹配搜索字符串開始的位置抛虫。
^ 如果標志中包括 m(多行搜索)字符松靡,^ 還將匹配 \n 或 \r 后面的位置。
^ 如果將 ^ 用作括號表達式中的第一個字符莱褒,則會對字符集求反击困。
$ 匹配搜索字符串結尾的位置。 如果標志中包括 m(多行搜索)字符广凸,$ 還將匹配 \n 或 \r 前面的位置阅茶。
. 匹配除換行符 \n 之外的任何單個字符。 若要匹配包括 \n 在內的任意字符谅海,請使用諸如 [\s\S] 之類的模式脸哀。
[] 標記括號表達式的開始和結尾。
{} 標記限定符表達式的開始和結尾扭吁。
() 標記子表達式的開始和結尾撞蜂。 可以保存子表達式以備將來之用。
“豎線” 指示在兩個或多個項之間進行選擇侥袜。
/ 表示 JScript 中的文本正則表達式模式的開始或結尾蝌诡。 在第二個“/”后添加單字符標志可以指定搜索行為。
\ 將下一字符標記為特殊字符枫吧、文本浦旱、反向引用或八進制轉義符。

** 大多數(shù)特殊字符在括號表達式內出現(xiàn)時失去它們的意義九杂,并表示普通字符颁湖。**

元字符

元字符 行為
\b 與一個字邊界匹配;即字與空格間的位置例隆。
\B 非邊界字匹配甥捺。
\d 數(shù)字字符匹配。等效于 [0-9]镀层。
\D 非數(shù)字字符匹配镰禾。等效于 [^0-9]。
\w 與以下任意字符匹配:A-Z鹿响、a-z羡微、0-9 和下劃線。等效于 [A-Za-z0-9_]惶我。
\W 與除 A-Z、a-z博投、0-9 和下劃線以外的任意字符匹配绸贡。等效于 [^A-Za-z0-9_]。
[xyz] 字符集。 與任何一個指定字符匹配听怕。
[a-z] 字符范圍捧挺。 匹配指定范圍內的任何字符。
[^a-z] 反向字符范圍尿瞭。 與不在指定范圍內的任何字符匹配闽烙。
{n} 正好匹配 n 次。 n 是非負整數(shù)声搁。
{n,} 至少匹配 n 次黑竞。 n 是非負整數(shù)。* 與 {0,} 相等疏旨。+ 與 {1,} 相等很魂。
{n,m} 匹配至少 n 次,至多 m 次檐涝。 n 和 m 是非負整數(shù)遏匆,其中 n <= m。 逗號和數(shù)字之間不能有空格谁榜。? 與 {0,1} 相等幅聘。
(pattern) 與pattern 匹配并保存匹配項。 您可以從由 JScript 中的 exec Method返回的數(shù)組元素中檢索保存的匹配項窃植。 若要匹配括號字符 ( )帝蒿,請使用\( 或者\)
(?:pattern) 與pattern 匹配撕瞧,但不保存匹配項陵叽;即不會存儲匹配項以備將來之用。 這對于用“or”字符 (豎線) 組合模式部件的情況很有用丛版。
(?=pattern) 正預測先行巩掺。 找到一個匹配項后,將在匹配文本之前開始搜索下一個匹配項页畦。 不會保存匹配項以備將來之用胖替。
(?!pattern) 負預測先行。 匹配與pattern 不匹配的搜索字符串豫缨。 找到一個匹配項后独令,將在匹配文本之前開始搜索下一個匹配項。 不會保存匹配項以備將來之用好芭。
\cx 匹配 x 指示的控制字符燃箭。 x 的值必須在 A-Z 或 a-z 范圍內。 如果不是這樣舍败,則假定 c 就是文本“c”字符本身招狸。
\xn 匹配 n敬拓,此處的 n 是一個十六進制轉義碼。 十六進制轉義碼必須正好是兩位數(shù)長裙戏。 允許在正則表達式中使用 ASCII 代碼乘凸。
\num 匹配 num,此處的 num 是一個正整數(shù)累榜。 這是對已保存的匹配項的引用营勤。
\n 標識一個八進制轉義碼或反向引用。 如果 \n 前面至少有 n 個捕獲子表達式壹罚,那么 n 是反向引用葛作。 否則,如果 n 是八進制數(shù) (0-7)渔嚷,那么 n 是八進制轉義碼进鸠。
\nm 標識一個八進制轉義碼或反向引用。 如果 \nm 前面至少有 nm 個捕獲子表達式形病,那么 nm 是反向引用客年。 如果 \nm 前面至少有 n 個捕獲子表達式,則 n 是反向引用漠吻,后面跟有文本 m量瓜。 如果上述情況都不存在,當 n 和 m 是八進制數(shù)字 (0-7) 時途乃,\nm 匹配八進制轉義碼 nm绍傲。
\nml 當 n 是八進制數(shù)字 (0-3),m 和 l 是八進制數(shù)字 (0-7) 時耍共,匹配八進制轉義碼 nml烫饼。
\un 匹配 n,其中 n 是以四位十六進制數(shù)表示的 Unicode 字符试读。
  1. ^(?=.*\d).{4,8}$對密碼應用以下限制:其長度必須介于 4 到 8 個字符之間杠纵,并且必須至少包含一個數(shù)字。
    在該模式中钩骇,.*\d查找后跟有數(shù)字的任意多個字符比藻。 對于搜索字符串“abc3qr”,這與“abc3”匹配倘屹。
  2. \b(?!th)\w+\b 與不以“th”開頭的單詞匹配银亲。
    在該模式中,\b與一個字邊界匹配纽匙。 對于搜索字符串“ quick ”务蝠,這與第一個空格匹配; (?!th) 與非“th”字符串匹配烛缔; 這與“qu”匹配请梢;從該匹配項開始赠尾,\w+ 與一個字匹配力穗。 這與“quick”匹配毅弧。
  3. \cM與 Ctrl+M 或一個回車符匹配。
  4. \x41 與“A”匹配当窗。\x041 等效于后跟有“1”的\x04(因為 n 必須正好是兩位數(shù))够坐。
  5. (.)\1 與兩個連續(xù)的相同字符匹配。
  6. (\d)\1與兩個連續(xù)的相同數(shù)字匹配崖面。
  7. \11 與制表符匹配元咙。
  8. \011與制表符匹配。
  9. \u00A9 與版權符號 (?) 匹配巫员。

非打印字符

下表包含表示非打印字符的轉義序列庶香。

字符 匹配 等效于
\f 換頁符。 \x0c\cL
\n 換行符简识。 \x0a\cJ
\r 回車符赶掖。 \x0d\cM
\s 任何空白字符。 其中包括空格七扰、制表符和換頁符奢赂。 [ \f\n\r\t\v]
\S 任何非空白字符。 [^ \f\n\r\t\v]
\t Tab 字符颈走。 \x09\cI
\v 垂直制表符膳灶。 \x0b\cK

優(yōu)先級順序

正則表達式的計算方式與算術表達式非常類似;即從左到右進行計算立由,并遵循優(yōu)先級順序轧钓。
下表按從高到低的順序包含了正則表達式運算符的優(yōu)先級順序。

運算符 說明
\ 轉義符
(), (?:), (?=), [] 括號和中括號
*锐膜、+毕箍、?、{n}枣耀、{n,}霉晕、{n,m} 限定符
^、$捞奕、\任何元字符 定位點和序列
豎線 替換
字符具有高于替換運算符的優(yōu)先級牺堰,例如,允許“m food”匹配“m”或“food”颅围。

簡單表達式

搜索字符串中匹配器本身的單個普通字符伟葫。

var pattern = /a/;       // 匹配a
var pattern = /a7M/;    // 匹配a7M

// 沒有串聯(lián)運算符。只須在一個字符后面鍵入另一個字符院促。

字符匹配

句點 (.) 匹配字符串中的各種打印或非打印字符筏养,只有一個字符例外斧抱。這個例外就是換行符 (\n)。

// 匹配 aac渐溶、abc辉浦、acc、adc 等等茎辐,以及 a1c宪郊、a2c、a-c 和 a#c:
var pattern = /a.c/;  

// 若要匹配包含文件名的字符串.
// 而句點 (.) 是輸入字符串的組成部分拖陆,句點前面加反斜扛 (\) 字符弛槐。
// 匹配 filename.ext
 var pattern = /filename\.ext/;

中括號表達式

匹配列表中的特定字符組.
當字符括在中括號內時,該列表稱為"中括號表達式"依啰。普通字符在中括號內表示其本身乎串,即,它在輸入文本中匹配一次其本身速警。大多數(shù)特殊字符在中括號表達式內出現(xiàn)時失去它們的意義叹誉。不過也有一些例外,如:

  1. 如果]字符不是第一項坏瞄,它結束一個列表桂对。若要匹配列表中的] 字符,請將它放在第一位鸠匀,緊跟在開始[后面蕉斜。
  2. \字符繼續(xù)作為轉義符。若要匹配 \ 字符缀棍,請使用\\宅此。
// 以下正則表達式匹配 Chapter 1、Chapter 2爬范、Chapter 3父腕、Chapter 4 和 Chapter 5:

var pattern = /Chapter [12345]/;

 //指定范圍時,開始值和結束值兩者都包括在范圍內(按 Unicode 排序順序青瀑,開始值必須在結束值的前面)璧亮。
var pattern = /Chapter [1-5]/; 


// 取反 ^
/Chapter [^12345]/
/Chapter [^1-5]/

// 使用括號來組合 Chapter 和 Section 
// 匹配 Chapter 1 或 Section 3
/^(Chapter|Section) [1-9][0-9]{0,1}$/

// 下面的修改提供相同的能力而不保存子匹配項:
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/
匹配項被保存
不保存匹配項

簡單示例

// 一個單詞連續(xù)出現(xiàn)的位置。
var pattern = /\b([a-z]+) \1\b/gi;
"asd asd  sasd asdawe asd sdfwe asd   asd asda dfasd asd asd sdf asd".match(pattern);
// ["asd asd", "asd asd"]

// 將一個URL解析為協(xié)議斥难、域勘高、端口及相對路徑框全。
var pattern = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
"http://www.runoob.com/regexp/regexp-example.html".match(pattern);
// ["http://www.runoob.com/regexp/regexp-example.html", "http", "www.runoob.com", undefined, "/regexp/regexp-example.html", index: 0, input: "http://www.runoob.com/regexp/regexp-example.html"]
// 可匹配chapter柳譬,而不能匹配terminal透葛。
var pattern = /ter\b/;    // \b 匹配一個單詞邊界

// 可匹配chapter,而不能匹配aptitude。
var pattern = /\Bapt/;   // \B 匹配非單詞邊界
// 可匹配Windows95或Windows98或WindowsNT竞阐,當找到一個匹配后缴饭,從Windows后面開始進行下一次的檢索匹配。
var pattern = /Windows(?=95 |98 |NT )/;

// 匹配空行
var pattern = /^\s*$/;
// 驗證由兩位數(shù)字骆莹、一個連字符再加 5 位數(shù)字組成的 ID 號颗搂。
var pattern = /\d{2}-\d{5}/;

 // 匹配 HTML 標記。
var pattern = /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

// 匹配一個字符串汪疮,其中字符串中要包含字符串ABC或123峭火,同時字符串的長度不能小于10個長度。
var pattern = /^(?=.*(ABC|123)).{10,}$/; 
pattern.test("123456ABC4") ;
  1. 網(wǎng)址(URL)
    [a-zA-z]+://[^\s]*
  2. IP地址(IP Address)
    ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
  3. 電子郵件(Email)
    \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  4. QQ號碼
    [1-9]\d{4,}
  5. HTML標記(包含內容或自閉合)
    <(.*)(.*)>.*<\/\1>|<(.*) \/>
  6. 密碼(由數(shù)字/大寫字母/小寫字母/標點符號組成智嚷,四種都必有,8位以上)
    (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$
  7. 日期(年-月-日)
    (\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
  8. 日期(月/日/年)
    ((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})
  9. 時間(小時:分鐘, 24小時制)
    ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
  10. 中文字符
    /^[\u4E00-\u9FA5]+$/
    匹配雙字節(jié)字符(包括漢子在內)[^\x00-\xff],可以用來計算字符串的長度(一個雙字節(jié)字符長度計2纺且,ASCII字符計1)
  11. 中文及全角標點符號(字符)
    [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
  12. 中國大陸固定電話號碼
    (\d{4}-|\d{3}-)?(\d{8}|\d{7})
  13. 中國大陸手機號碼
    /^0?1[35784][0-9][0-9]{8}$/
  14. 中國大陸郵政編碼
    [1-9]\d{5}
  15. 中國大陸身份證號(15位或18位)
    /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  16. 非負整數(shù)(正整數(shù)或零)
    \d+
  17. 正整數(shù)
    [0-9]*[1-9][0-9]*
  18. 負整數(shù)
    -[0-9]*[1-9][0-9]*
  19. 整數(shù)
    -?\d+
  20. 小數(shù)
    (-?\d+)(\.\d+)?
  21. 不包含abc的單詞
    \b((?!abc)\w)+\b
  22. 不能純數(shù)字
    /^\d+$/g
  23. URL解析為協(xié)議盏道、域、端口及相對路徑
var pattern = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
"http://www.runoob.com/regexp/regexp-example.html".match(pattern);
// ["http://www.runoob.com/regexp/regexp-example.html", "http", "www.runoob.com", undefined, "/regexp/regexp-example.html", index: 0, input: "http://www.runoob.com/regexp/regexp-example.html"]
  1. email
    \b([a-zA-Z0-9%_.+\-]+)@([a-zA-Z0-9.\-]+?\.[a-zA-Z]{2,6})\b
  2. Hostname
    \b(?:[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}?[a-zA-Z0-9]\.)+[a-zA-Z]{2,6}\b
  3. IP
    \b(?:\d{1,3}\.){3}\d{1,3}\b
  4. 匹配首尾空白字符的正則表達式:
    ^\s*|\s*$
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末载碌,一起剝皮案震驚了整個濱河市猜嘱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嫁艇,老刑警劉巖朗伶,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異步咪,居然都是意外死亡论皆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門猾漫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來点晴,“玉大人,你說我怎么就攤上這事悯周×6剑” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵禽翼,是天一觀的道長屠橄。 經(jīng)常有香客問我,道長闰挡,這世上最難降的妖魔是什么锐墙? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮解总,結果婚禮上贮匕,老公的妹妹穿的比我還像新娘。我一直安慰自己花枫,他們只是感情好刻盐,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布掏膏。 她就那樣靜靜地躺著,像睡著了一般敦锌。 火紅的嫁衣襯著肌膚如雪馒疹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天乙墙,我揣著相機與錄音颖变,去河邊找鬼。 笑死听想,一個胖子當著我的面吹牛腥刹,可吹牛的內容都是我干的。 我是一名探鬼主播汉买,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衔峰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛙粘?” 一聲冷哼從身側響起垫卤,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎出牧,沒想到半個月后穴肘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡舔痕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年评抚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赵讯。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡盈咳,死狀恐怖,靈堂內的尸體忽然破棺而出边翼,到底是詐尸還是另有隱情鱼响,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布组底,位于F島的核電站丈积,受9級特大地震影響,放射性物質發(fā)生泄漏债鸡。R本人自食惡果不足惜江滨,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厌均。 院中可真熱鬧唬滑,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至稻艰,卻和暖如春懂牧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尊勿。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工僧凤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人元扔。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓躯保,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摇展。 傳聞我的和親對象是個殘疾皇子吻氧,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容