js正則表達式總結
新建正則表達式
var reg = /正則表達式/(g,i,m)
var reg = RegExp(‘mutations’,(g,i,m))
g全局匹配不加代表只匹配第一個
i忽略大小寫
m多行匹配
1.驗證
用於驗證時,通常需要在前後分別加上^和$,用於匹配整個待驗證字符串;
2.搜索替換
要在前後加上\b
字符類匹配
[…] 查找方括號之間的任何字符
[^…] 查找任何不在方括號之間的字符
[a-z] 查找任何從小寫 a 到小寫 z 的字符
[A-Z] 查找任何從大寫 A 到大寫 Z 的字符
[A-z] 查找任何從大寫 A 到小寫 z 的字符
. 查找單個字符,除了換行和行結束符
\w 查找單詞字符,等價於[a-zA-Z0-9]
\W 查找非單詞字符,等價於[^a-zA-Z0-9]
\s 查找空白字符
\S 查找非空白字符
\d 查找數字,等價於[0-9]
\D 查找非數字字符,等價於[^0-9]
\b 匹配單詞邊界
\r 查找回車符
\t 查找制表符
\0 查找 NULL 字符
\n 查找換行符
重復字符匹配
{n,m} 匹配前一項至少n次,但不能超過m次
{n,} 匹配前一項n次或更多次
{n} 匹配前一項n次
n? 匹配前一項0次或者1次,也就是說前一項是可選的,等價於{0,1}
n+ 匹配前一項1次或多次,等價於{1,}
n* 匹配前一項0次或多次,等價於{0,}
n$ 匹配任何結尾為 n 的字符串
^n 匹配任何開頭為 n 的字符串
?=n 匹配任何其後緊接指定字符串 n 的字符串
?!n 匹配任何其後沒有緊接指定字符串 n 的字符串
‘abc123‘.replace(/\w(?=\d)/,‘123‘)
"ab123123"
‘abc123‘.replace(/\w(?!\d)/,‘123‘) "123bc123"
匹配特定數字
^[1-9]\d*$ 匹配正整數
^-[1-9]\d*$ 匹配負整數
^-?[0-9]\d*$ 匹配整數
^[1-9]\d*|0$ 匹配非負整數(正整數 + 0)
^-[1-9]\d*|0$ 匹配非正整數(負整數 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 匹配正浮點數
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 匹配負浮點數
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ 匹配浮點數
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 匹配非負浮點數(正浮點數 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ 匹配非正浮點數(負浮點數 + 0)
匹配特定字符串
^[A-Za-z]+$ 匹配由26個英文字母組成的字符串
^[A-Z]+$ 匹配由26個英文字母的大寫組成的字符串
^[a-z]+$ 匹配由26個英文字母的小寫組成的字符串
^[A-Za-z0-9]+$ 匹配由數字和26個英文字母組成的字符串
^\w+$ 匹配由數字、26個英文字母或者下劃線組成的字符串
分組 ()()() $1$2$3
測試 reg.test()
var reg = /abc/g; var str = "123abc456abc"; console.log(reg.lastIndex);//0 console.log(reg.test(str));//true console.log(reg.lastIndex);//6 console.log(reg.test(str));//true console.log(reg.lastIndex);//12 console.log(reg.test(str));//false
reg.exec()
var str = "xyz"; var reg1 = /x/; var reg2 = /a/; var res1 = reg1.exec(str); var res2 = reg2.exec(str); console.log(res1);//["x", index: 0, input: "xyz"] console.log(res2);//null
reg.search()
var str = "abcdcef"; console.log(str.search(/c/g));//2
js正則表達式總結