這篇文章主要為大家展示了“ES6中正則表達(dá)式有什么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“ES6中正則表達(dá)式有什么用”這篇文章吧。
石河子網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,石河子網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為石河子千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的石河子做網(wǎng)站的公司定做!
一、構(gòu)造函數(shù)實(shí)例化參數(shù)的變化
大家都知道,在ES5中,new RegExp(參數(shù)1,參數(shù)2),參數(shù)1若是指定了正則修飾符,則參數(shù)2就不應(yīng)該出現(xiàn),否則將會(huì)報(bào)錯(cuò),在ES6中,第二個(gè)參數(shù)的正則修飾符會(huì)覆蓋掉原有的修飾符:
二、u修飾符
u修飾符可以自動(dòng)識(shí)別碼點(diǎn)大于0xFFFF的編碼。只是ES6的新增內(nèi)容!
另外使用u修飾符需要注意一下幾點(diǎn):
1. “.”字符
在正則表達(dá)式中,.字符的含義是除了換行符以外的所有字符,如要.字符匹配碼點(diǎn)大于\uFFFF的字符,必須帶u修飾符,否則不能正常識(shí)別;
var s = "??"; //在ES5中 /^.$/.test(s)//false //在ES6中 /^.$/u.test(s)//true
2.Unicode字符表示法
ES6中新增使用了大括號(hào)表示Unicode字符,這種方法在正則表達(dá)式中必須加上u修飾符才能識(shí)別。
//在ES5中,61會(huì)被當(dāng)做量詞使用 /\u{61}/.test("a")//false //在ES6中 /\u{61}/u.test("a")//true
3.預(yù)定義模式
u修飾符也影響到預(yù)定義模式,加了u修飾符,才能正確識(shí)別碼點(diǎn)大于0xFFFF的Unicode字符。
4.對(duì)i修飾符的影響
有些Unicode編碼的字符比較接近,比如大寫的K的編碼有\(zhòng)u004B和\u212A,
//未添加u修飾 /[a-z]/.test("\u212A")//false //添加u修飾 /[a-z]/iu.test("\u212A")//true
三、y修飾符
ES6還新增了一個(gè)y修飾符,與通常的g修飾符用法類似,都是用來全局匹配,不同的是y修飾符又叫做“粘連”修飾符,在上一次匹配成功的下一個(gè)位置開始匹配,但是下一次開始位置必須要能夠滿足匹配,也就是匹配從剩余的第一個(gè)位置開始,這就是“粘連”的含義(個(gè)人理解)吧。
舉個(gè)例子吧!
var s = qqqq_q_qq; var r1 = /q+/g; var r2 = /q+/y //第一次匹配 r1.exec(s)//["qqqq"] r2.exec(s)//["qqqq"] //第二次匹配 r1.exec(s)//["qqq"] r2.exec(s)//null
注意:y修飾符隱含了頭部匹配的標(biāo)志^
/a/.exec("bdab");//null /a/.exec("abbd");//["a"]
開頭必須匹配上
四、新增屬性
1.sticky屬性
判斷正則是否設(shè)置了y修飾符。
返回布爾值。
2.flags屬性
返回正則的修飾符
以上是“ES6中正則表達(dá)式有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!