1. 程式人生 > >2018-9-11-正則表示式

2018-9-11-正則表示式

正則表示式 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正則表示式方法

  1. search() 方法

    用於檢索字串中指定的子字串,或檢索與正則表示式相匹配的子字串,並返回子串的起始位置

  2. replace() 方法

    用於在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的子串。

  3. test()

    用於檢測一個字串是否匹配某個模式,如果字串中含有匹配的文字,則返回 true,否則返回 false。

  4. exec()

    exec() 方法用於檢索字串中的正則表示式的匹配。

    該函式返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null。

RegExp 物件方法

方法 描述
exec 索字串中指定的值。返回找到的值,並確定其位置。
test 檢索字串中指定的值。返回 true 或 false。
toString 返回正則表示式的字串。

支援正則表示式的 String 物件的方法

方法 描述 FF IE
search 檢索與正則表示式相匹配的值。 1 4
match 到一個或多個正則表示式的匹配。 1 4
replace 與正則表示式匹配的子串。 1 4
split 把字串分割為字串陣列。 1