2018-9-11-正則表示式
阿新 • • 發佈:2018-12-22
正則表示式 Regular Expression
.
匹配除斷行外任意一個字元
\w
匹配阿拉伯數字,英文大小寫字母和下劃線
\W
匹配\w的補集
\d
匹配整數
\D
匹配所有不是數字的字元,包括空格
\s
匹配空白字元,換行,製表符等
\S
\s的補集
[選擇範圍]
匹配方括號中的任意一個字元,注意!只代表一個字元例如[abc]只代表a或b或c
[a-z],[a-d]
匹配a到z,a到d,適用於數字及大寫字母
[\u4e00-\u9fa5]
匹配任意中文字元,\u代表萬國碼(Unicode),用數字代表文字的一項標準
+
匹配一次或多次,例如 /[abc]+/g
匹配aaa,ccc,b等等
*
匹配零次或多次
?
匹配零次或一次
{a,b}
匹配a次到b次,指定範圍,或{a}
匹配a次
分組匹配()
被正則表示式匹配(捕獲)到的字串會被暫存起來。其中,由分組捕獲的串會從1開始編號
var reg = /(\d{4})-(\d{2})-(\d{2})/
var date = '2010-04-12'
reg.test(date)
RegExp.$1 // 2010
RegExp.$2 // 04
RegExp.$3 // 12
分組匹配但不捕獲(?:)
如果(??*),為只匹配但不捕獲例如(?:reg|reb|rec),只匹配reg或者reb或者rec但不捕獲,即不佔用$變數
正向預查(?=)
/\d+(?=b)/g
匹配元素後一定接b(變數)但不匹配b
正向否定預查(?!b)
注意需要指出不匹配b變數,且不匹配之前的匹配元素
/\d+(?!b|\d)/g
修飾符 | 描述 |
---|---|
i | 執行對大小寫不敏感的匹配。 |
g | 執行全域性匹配(查詢所有匹配而非在找到第一個匹配後停止)。 |
m | 執行多行匹配。 |
符號 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
^ | 行首或字串開始 | ^yo | yo | ayo |
$ | 行末或字串結束 | yo$ | yo | yop |
\b | 單詞邊界 | \byo\b | mu yo mu | muyomu |
\B | 非單詞邊界 | \Byo\B | muyomu | mu yo mu |
符號 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
[ ] | 字元集合 | [ace] | a, c, e | d |
[ - ] | 字元範圍 | [a-c] | a, b, c | d |
[^ ] | 不包含的字元集合 | [^abc] | d, e | a, b, c |
. | 匹配除斷行外的任何字元 | yo. | yoo, yop, yoh | yo |
\s | 空白字元,等於[\n\r\f\t ] | la\sla | la la | lala |
\S | 非空白字元,等於[^\n\r\f\t] | la\sla | lala | la la |
\d | 數字 | \d{2} | 23 | 1a |
\D | 非數字 | \D{3} | yoo, abc | yo1 |
\w | 單詞,等於[a-z-A-Z0-9_] | \w{4} | v123 | v12.3 |
\W | 非單詞,等於[^a-z-A-Z0-9_] | .$%? | .$%? | .ab? |
符號 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
(?=xxx) | 正向肯定預查,從任何匹配xxx的字串開始處匹配查詢字串 | yo(?=o) | yoo | yo |
(?!xxx) | 正向否定預查,從任何不匹配pattern的字串開始處匹配查詢字串 | yo(?!o) | yo | yoo |
(?<=xxx) | 反向肯定預查,與正向肯定預查類擬,只是方向相反 | (?<=y)o | yo | yoo |
(?<!xxx) | 反向否定預查,與正向否定預查類擬,只是方向相反 | (?<!goo)d | mood | good |
特殊字元 | 描述 |
---|---|
\n | 斷行 |
\r | 回車符 |
\t | 製表符 |
\v | 垂直製表符 |
\f | 換頁 |
[\b] | 退格 |
符號 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
| | 或,其一 | a|b | a, b | c |
(xxx) | 匹配xxx並獲取這一匹配 | yo(o|p) | yoo 或 yop | yoh |
(?:xxx) | 匹配xxx但不獲取這一匹配 | y(??) | yo | ya |
+ | 重複1次或多次 | yo+ | yo, yooo | y |
* | 重複0次或多次 | yo* | y, yoo | yop |
? | 出現0次或1次 | yo? | y, yo | ye |
?? | ?的懶惰模式,儘可能少匹配 | yoo?? | yo | yoo |
+? | +的懶惰模式 | yo+? | yo | yoo |
*? | *的懶惰模式 | yo*? | y | yo |
{n} | 重複n次 | yo{2} | yoo | yooo |
{n,m} | 重複n到m次 | yo{1, 3} | yo,yooo | yoooo |
{n,} | 重複至少n次 | yo{2,} | yoo, yooo | yo |
表示式 | 描述 |
---|---|
[abc] | 查詢方括號之間的任何字元。 |
[^abc] | 查詢任何不在方括號之間的字元。 |
[0-9] | 查詢任何從 0 至 9 的數字。 |
[a-z] | 查詢任何從小寫 a 到小寫 z 的字元。 |
[A-Z] | 查詢任何從大寫 A 到大寫 Z 的字元。 |
[A-z] | 查詢任何從大寫 A 到小寫 z 的字元。 |
[adgk] | 查詢給定集合內的任何字元。 |
[^adgk] | 查詢給定集合外的任何字元。 |
(red|blue|green) | 查詢任何指定的選項。 |
javascript正則表示式方法
-
search() 方法
用於檢索字串中指定的子字串,或檢索與正則表示式相匹配的子字串,並返回子串的起始位置
-
replace() 方法
用於在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的子串。
-
test()
用於檢測一個字串是否匹配某個模式,如果字串中含有匹配的文字,則返回 true,否則返回 false。
-
exec()
exec() 方法用於檢索字串中的正則表示式的匹配。
該函式返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null。
RegExp 物件方法
方法 | 描述 |
---|---|
exec | 索字串中指定的值。返回找到的值,並確定其位置。 |
test | 檢索字串中指定的值。返回 true 或 false。 |
toString | 返回正則表示式的字串。 |
支援正則表示式的 String 物件的方法
方法 | 描述 | FF | IE |
---|---|---|---|
search | 檢索與正則表示式相匹配的值。 | 1 | 4 |
match | 到一個或多個正則表示式的匹配。 | 1 | 4 |
replace | 與正則表示式匹配的子串。 | 1 | 4 |
split | 把字串分割為字串陣列。 | 1 |