在JavaScript中用正則表達式是最多見不過了,正則看起來像天書,理解了以後其實不難,下面我將總結一下各類正則字符的意思。客官請慢用:正則表達式
符號 | 含義 |
---|---|
\b |
元字符,表明單詞的開頭或結尾,也就是單詞的分界處,不匹配任意一個字符,只匹配一個位置 |
. |
元字符,匹配除了換行符之外的任意字符 |
* |
能夠連續重複使用任意次 |
\w |
匹配字母或數字或下劃線 |
\s |
匹配空格符 |
\d |
匹配數字 |
^ |
匹配字符串開始 |
$ |
匹配字符串結束 |
符號 | 含義 |
---|---|
* |
重複0次或屢次 |
+ |
重複1次或屢次 |
? |
重複0次或1次 |
{n} |
重複N次 |
{n, } |
重複N次或更屢次 |
{n, m} |
重複n到m次 |
符號 | 含義 |
---|---|
[] |
匹配[] 中的任意一個字符 |
例子:匹配(010)88886666
或022-22334455
或02912345678
,
正則表達式: /\(?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暫不支持) |
參考連接:字符串