正則表達式總結

在JavaScript中用正則表達式是最多見不過了,正則看起來像天書,理解了以後其實不難,下面我將總結一下各類正則字符的意思。客官請慢用:正則表達式

元字符

符號 含義
\b 元字符,表明單詞的開頭或結尾,也就是單詞的分界處,不匹配任意一個字符,只匹配一個位置
. 元字符,匹配除了換行符之外的任意字符
* 能夠連續重複使用任意次
\w 匹配字母或數字或下劃線
\s 匹配空格符
\d 匹配數字
^ 匹配字符串開始
$ 匹配字符串結束

重複

符號 含義
* 重複0次或屢次
+ 重複1次或屢次
? 重複0次或1次
{n} 重複N次
{n, } 重複N次或更屢次
{n, m} 重複n到m次

字符類

符號 含義
[] 匹配[]中的任意一個字符

例子:匹配(010)88886666022-2233445502912345678,
正則表達式: /\(?0\d{2}[-\)]?\d{8}/.net

分支條件

上述表達式中也能匹配010)12345678(022-87654321這樣的「不正確」的格式。要解決這個問題要用到分支條件。因此上述的正則表達式能夠改寫爲/\(?0\d{2}\)[-]?\d{8}|0\d{2}[-]?\d{8}/code

符號 含義
| 匹配|的左右兩邊的條件,任意一個符合就匹配

分組

重複多個字符時,可使用()來表示。好比:(\d{1,3}\.){3}\d{1,3}是一個簡單的IP地址匹配。
然而像256.300.888.999這種不可能存在的IP地址。因此咱們改寫一下,一個正確的IP地址正則表達式應該是/((2[0-4]\d|25[0-5]|[01]?\d?\d)\.){3}(2[0-4]\d|25[0-5]|[01]?\d?\d)/htm

反義

符號 含義
\W 匹配任意不是字母,數字,下劃線,漢字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非數字的字符
\B 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x之外的任意字符
[^aeiou] 匹配除了aeiou這幾個字母之外的任意字符

後向引用

使用小括號指定一個子表達式後,匹配這個子表達式的文本(也就是捕獲的內容)。默認狀況下,每一個分組會自動擁有一個組號,規則是:從左往右,以分組的左括號爲標誌,第一個出現的分組的組號爲1,第二個爲2,以此類推教程

符號 含義
\1 \2 \3 ... \n 表示匹配第N個出現的捕獲組
\k<Word> 自定義捕獲組
(?:exp) 表示匹配exp,但不捕獲匹配的文本,也不給此分組分配組號

(這裏面的性質JavaScript暫不支持)也能夠指定子表達式的組名。好比:<Word>\w+要引用這個自定義的子表達式能夠用\k<Word>ip

零寬斷言

用於查找在某些內容(但並不包括這些內容)以前或以後的東西,也就是說它們像\b,^,$那樣用於指定一個位置,這個位置應該知足必定的條件(斷言),所以它們也被稱爲零寬斷言ci

符號 含義
(?=exp) 也叫零寬度正預測先行斷言,匹配符合exp的前面的正則的內容。好比\b\w+(?=ing\b),匹配以ing結尾的單詞的前面部分(除了ing之外的\w+部分),如查找I'm singing while you're dancing.時,它會匹配sing和danc。
(?<=exp) 也叫零寬度正回顧後發斷言,它的做用與(?=exp)相反,匹配符合exp以後的正則的內容。好比(?<=\bre)\w+\b會匹配以re開頭的單詞的後半部分(除了re之外的部分),例如在查找reading a book時,他會匹配ading。(這裏面的性質JavaScript暫不支持)

負向零寬斷言

符號 含義
(?!exp) 也叫零寬度負預測先行斷言,斷言此位置的後面不能匹配表達式exp。例如:\d{3}(?!\d)匹配三位數字,並且這三位數字的後面不能是數字。
(?<!exp) 也叫零寬度負回顧後發斷言,與上面的(?!exp)含義相反,表示斷言此位置的前面不能匹配表達式exp。例如:(?<![a-z])\d{7}匹配前面不是小寫字母的七位數字(這裏面的性質JavaScript暫不支持)

參考連接:字符串

相關文章
相關標籤/搜索