-
正則表達(dá)式工具
image.png
(一)創(chuàng)建方法
-
字面量方法
var reg = /規(guī)則表達(dá)式/
-
創(chuàng)建函數(shù)方法
var reg = new RegExp(參數(shù)1断箫,'i')
里面有兩個參數(shù)嘉赎,第一個參數(shù)為匹配規(guī)則蝗肪,第二個參數(shù)為匹配模式
image.png -
字符串全局替換
image.png
(二)常用匹配規(guī)則
- 元字符
1. ^ 匹配字符串的開始
2. $ 匹配字符串的結(jié)束
3. 任意字符 .
4. \w 字母仇矾、數(shù)字、下劃線
5. \s 任意空白字符
6. \d 匹配數(shù)字,等同于[0-9]
7. \D 匹配非數(shù)字喻粹,等同于[^0-9]
8. | 或匹配,如 /x|y/ 正則可匹配x或y兩個字符
9. [abc] 表示 包含里面的任意一個
- 反義字符
1. [^x] 匹配除“x”之外的所有字符草巡,其中“x”可以為任意字符
2. [^xyz] 同上守呜,匹配除“x、y山憨、z”之外的任意字符
- 重復(fù)匹配
1. 查乒?重復(fù)出現(xiàn)零次或一次
2. + 重復(fù)出現(xiàn)一次或多次
3. * 重復(fù)出現(xiàn)零次或多次
4. {n} 重復(fù)出現(xiàn)n次
5. {n,} 至少重復(fù)出現(xiàn)n次
6. {m,n} 重復(fù)重現(xiàn)m到n次,其中郁竟,m<n
- 組合
- 用括號分組
- 分組的應(yīng)用
(三)字符串與正則相關(guān)的方法
// 字符串與正則相關(guān)的方法
var str = "1a2f3c4w0w3g"
// split() 可以將一個字符串拆分為一個數(shù)組;方法中可以傳遞一個正則表達(dá)式作為參數(shù)
console.log( str.split(/[A-z]/) ) //1,2,3,4,0,3
// 即使不指定全局匹配也會全部拆分
// search() 可以搜索字符串中是否含有指定內(nèi)容(只會查找第一個) 返回值為索引 沒有為-1
console.log(str.search(/[acg]/))
// match() 可以根據(jù)正則表達(dá)式聰字符串中將符合條件的內(nèi)容提取出來
console.log(str.match(/[A-z]/)); // a 默認(rèn)情況下只會找到第一個符合要求的內(nèi)容
console.log(str.match(/[A-z]/g)); // ["a", "f", "c", "w", "w", "g"] 所有的字母
// replace() 可以將指定內(nèi)容替換為新的內(nèi)容; 1玛迄、被替換的內(nèi)容:默認(rèn)只會替換第一個 2、新的內(nèi)容
console.log(str.replace(/w/g,""));
(四)優(yōu)先級
image.png
實(shí)例:
1. 寫一個電話號碼的正則表達(dá)式
/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/
2. 登錄的用戶名: 8到20個字符,以字母開頭,其他字符可以是字母,數(shù)字或者下劃線
/^[A-Z]\w{8,20}$/
3. 密碼: 不低于6位,不高與16位,不能是純數(shù)字,純字母,必須有大小寫
/^(?![0-9]+$)(?![a-zA-Z]+$)(?![0-9A-Z]+$)(?![0-9a-z]+$)[0-9A-Za-z]{6,16}$/