1. 程式人生 > 其它 >正則,從入門到精通

正則,從入門到精通

1:正則要麼匹配字元,要麼匹配位置

2:可以使用括號捕獲資料。可以在api中分組引用

3:橫向模糊匹配是指 使用量詞表示非固定的字元 /ab{2,4}c/ => 'abb' 'abbb' 'abbbb'

4:縱向模糊匹配是指使用[abc] 表示可以是中括號中的某一個 /a[cbd]b/ => 'acb' 'abb' 'adb'

5:範圍表示法[0123456abcdef] =>[0-6a-f]

6:排除字元組 [^abc] 就是非abc 字元組開頭是^表示取反。

7:其他字元組的簡寫

\d === [0-9]

\D === [^0-9] 非數字

\w === [0-9a-zA-Z_] 數字字母下劃線

\W ==== [^0-9a-zA-Z_] 非數字,非字母,非下劃線

\s ==== [\t\v\n\r\f] 空格 ,水平製表符 垂直製表符,換行符,回車符,換頁符

\S === [^\t\v\n\r\f]非空白符

. 萬用字元 除了換行符,回車符,行分隔符,段落分隔符外的其他字元

如果想匹配任何字元[\d\D] [\w\W] [^] [\s\S]

8:量詞

{m,} 至少m次

?等價於 {0,1} 至少1次

{m}等價於{m} 出現m次

+ 等價於{1,} ,至少出現1次

* 等價於 {0,}出現任意次

9:貪婪匹配和惰性匹配

量詞後面拼?表示惰性匹配

{m,n}?

{m,}?

??

+?

*?

var regex = /\d{2,5}?/g; var string = "123 1234 12345 123456"; console.log( string.match(regex) ); // => ["12", "12", "34", "12", "34", "12", "34", "56"]

10: 匹配位置

有6個錨字元 ^ $ \b \B(?=p)(?!p)

^ ----- 開頭

$ ----- 結尾

\b ----- 單詞邊界 具體就是\w 和\W 之間的位置,包括\w 和 ^ ,\w 和$之間的位置

\B --- -- 非單詞邊界 具體就是\w與\w ,\W與\W,\W與^,\W與$之間的位置。

(?=p) 其中p是一個子模式,即p前面的位置

比如(?=a)

var result = "dayu".replace(/(?=a)/g, '#');

console.log(result); // => "d#ayu"

(?!p) 非 上述