成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS應(yīng)用之正則表達(dá)式

omgdog / 3112人閱讀

摘要:定義正則表達(dá)式是用于匹配字符串中字符組合的模式。使用正則表達(dá)式或者一個(gè)固定字符串分隔一個(gè)字符串,并將分隔后的子字符串存儲(chǔ)到數(shù)組中的方法。常用的正則表達(dá)式手機(jī)號(hào)郵政編碼校驗(yàn)匹配漢字簡易郵箱校驗(yàn)

定義

正則表達(dá)式是用于匹配字符串中字符組合的模式。

創(chuàng)建正則表達(dá)式

兩種方式:

1.new RegExp()

let pattern1 = new RegExp("cat"); //第一個(gè)參數(shù)字符串
let pattern2 = new RegEXP("cat", "ig"); //第二個(gè)參數(shù)可選模式修飾符

i:忽略大小寫

g:全局匹配,即模式被應(yīng)用于所有字符串,而非匹配到第一項(xiàng)時(shí)立即停止

m:多行匹配

y:執(zhí)行“粘性”搜索,匹配從目標(biāo)字符串的當(dāng)前位置開始,可以使用y標(biāo)志

2.字面量(以下栗子均使用字面量的方式創(chuàng)建正則表達(dá)式)

let pattern3 = /cat/;
let pattern4 = /cat/ig;
匹配正則表達(dá)式

1.test
在字符串中測試是否匹配的RegExp方法,它返回true或false。

let str = "This is a cat!";
console.log(pattern4.test(str)); //true

2.exec
在字符串中執(zhí)行查找匹配的RegExp方法,它返回一個(gè)數(shù)組(未匹配到則返回null)。

console.log(pattern4.exec(str)); //[cat]

3.match
在字符串中執(zhí)行查找匹配的String方法,它返回一個(gè)數(shù)組或者在未匹配到時(shí)返回null。

console.log(str.match(pattern4)); //[cat]

4.replace
在字符串中執(zhí)行查找匹配的String方法,并且使用替換字符串替換掉匹配到的子字符串。

console.log(str.replace(pattern4, "dog")); //This is a dog!

5.search
在字符串中測試匹配的String方法,它返回匹配到的位置索引,或者在失敗時(shí)返回-1。

console.log(str.search(pattern4)); //10

6.split
使用正則表達(dá)式或者一個(gè)固定字符串分隔一個(gè)字符串,并將分隔后的子字符串存儲(chǔ)到數(shù)組中的String方法。

console.log(str.split(pattern4)); //["This is a ", "!"]
正則表達(dá)式語法

重復(fù)匹配(?、*、+、.、{m,n})

.匹配除換行符外的任意字符,單個(gè)匹配

x?匹配0個(gè)或1個(gè)x

x*匹配0個(gè)或任意多個(gè)x

x+匹配至少1個(gè)x

x{m,n}匹配最少m,最多n個(gè)的x,閉區(qū)間

(xyz){m,n}把xyz看成一個(gè)整體,匹配xyz最少m次最多n次

chrome|firefox|ie匹配chrome或者firefox或者ie中的任意一個(gè)

let str = "google",
    str1 = "gooooogle",
    str2 = "ggle",
    pattern = /g..gle/,
    pattern1 = /go*gle/,
    pattern2 = /go+gle/,
    pattern3 = /g.*gle/,//0個(gè)或多個(gè)的任意字符
    pattern4 = /go?gle/,
    pattern5 = /go{2,4}gle/,
    pattern6 = /go{3}gle/,//匹配3個(gè)o->gooogle
    pattern7 = /go{3,}gle/;//匹配3個(gè)或3個(gè)以上o
    
console.log(pattern.test(str));//true
console.log(pattern1.test(str));//true
console.log(pattern1.test(str1));//true
console.log(pattern2.test(str1));//true
console.log(pattern2.test(str2));//false
console.log(pattern3.test(str));//true
console.log(pattern3.test(str2));//true
console.log(pattern4.test(str));//false
console.log(pattern7.test(str1));//true

字符類匹配

[a-z]*表示任意個(gè)a-z中的字符

[A-Z]*表示任意個(gè)A-Z中的字符

[0-9]*表示任意個(gè)0-9中的字符

[a-zA-Z0-9]表示匹配一個(gè)以上三種情況下的任意一個(gè)字符

[^0-9]表示非0-9的任意字符

^[0-9]表示以0-9為起始字符,^表示從起始位置開始匹配

[0-9]$表示以0-9為結(jié)束字符,$表示匹配結(jié)束位置

/d匹配數(shù)字,同[0-9]

/D匹配非數(shù)字,同[ ^0-9]

/w匹配字母數(shù)字及下劃線_,同[a-zA-Z0-9_]

/W匹配非字母數(shù)字及下劃線_,同[^a-zA-Z0-9_]

匹配單詞邊界

B匹配非單詞邊界

空白字符