ES6正則表達(dá)式的一些新功能總結(jié)
本文主要總結(jié)了ES6正則表達(dá)式的一些新功能,分享出來供大家參考學(xué)習(xí),下面來看看詳細(xì)的介紹:
一、構(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ì)覆蓋掉原有的修飾符:
<script> //在ES5中,下面的正則自帶修飾符ig,則第二個(gè)參數(shù)不能出現(xiàn) var reg = new RegExp(/asd/ig); //在ES6中,如下: var reg = new RegExp(/asd/ig,'i'); //i會(huì)覆蓋掉原來的ig </script>
二、u修飾符
u修飾符可以自動(dòng)識(shí)別碼點(diǎn)大于0xFFFF的編碼。只是ES6的新增內(nèi)容!
<script> /\uD83D/u.test("\uD83D\uDC2A"); //在ES6中會(huì)返回false,u修飾符默認(rèn)處理的UTF-16編碼 /\uD83D/.test("\uD83D\uDC2A"); //在ES5中會(huì)將test的的參數(shù)拆分成兩個(gè)字符,返回true </script>
另外使用u修飾符需要注意一下幾點(diǎn):
1. “.”字符
在正則表達(dá)式中,.字符的含義是除了換行符以外的所有字符,如要.字符匹配碼點(diǎn)大于\uFFFF的字符,必須帶u修飾符,否則不能正常識(shí)別;
<svcipt> var s = "��"; //在ES5中 /^.$/.test(s)//false //在ES6中 /^.$/u.test(s)//true </script>
2.Unicode字符表示法
ES6中新增使用了大括號(hào)表示Unicode字符,這種方法在正則表達(dá)式中必須加上u修飾符才能識(shí)別。
<svcipt> //在ES5中,61會(huì)被當(dāng)做量詞使用 /\u{61}/.test("a")//false //在ES6中 /\u{61}/u.test("a")//true </script>
3.預(yù)定義模式
u修飾符也影響到預(yù)定義模式,加了u修飾符,才能正確識(shí)別碼點(diǎn)大于0xFFFF的Unicode字符。
4.對(duì)i修飾符的影響
有些Unicode編碼的字符比較接近,比如大寫的K的編碼有\(zhòng)u004B和\u212A,
<svcipt> //未添加u修飾 /[a-z]/.test("\u212A")//false //添加u修飾 /[a-z]/iu.test("\u212A")//true </script>
三、y修飾符
ES6還新增了一個(gè)y修飾符,與通常的g修飾符用法類似,都是用來全局匹配,不同的是y修飾符又叫做“粘連”修飾符,在上一次匹配成功的下一個(gè)位置開始匹配,但是下一次開始位置必須要能夠滿足匹配,也就是匹配從剩余的第一個(gè)位置開始,這就是“粘連”的含義(個(gè)人理解)吧。
舉個(gè)例子吧!
<svcipt> 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 </script>
注意:y修飾符隱含了頭部匹配的標(biāo)志^
/a/.exec("bdab");//null /a/.exec("abbd");//["a"]
開頭必須匹配上
四、新增屬性
1.sticky屬性
判斷正則是否設(shè)置了y修飾符。
返回布爾值。
2.flags屬性
返回正則的修飾符
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
JS實(shí)現(xiàn)動(dòng)態(tài)表格的添加,修改,刪除功能(推薦)
這篇文章主要介紹了JS實(shí)現(xiàn)動(dòng)態(tài)表格的添加,修改,刪除功能(推薦)的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06基于chosen插件實(shí)現(xiàn)人員選擇樹搜索自動(dòng)篩選功能
這篇文章主要介紹了基于chosen插件實(shí)現(xiàn)人員選擇樹搜索自動(dòng)篩選功能的相關(guān)資料,需要的朋友可以參考下2016-09-09小程序?qū)崿F(xiàn)長(zhǎng)按保存圖片的方法
這篇文章主要介紹了小程序?qū)崿F(xiàn)長(zhǎng)按保存圖片的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12js實(shí)現(xiàn)同一頁面可多次調(diào)用的圖片幻燈切換效果
這篇文章主要介紹了js實(shí)現(xiàn)同一頁面可多次調(diào)用的圖片幻燈切換效果,可實(shí)現(xiàn)在同一頁面中多次調(diào)用幻燈切換效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02JavaScript使用類似break機(jī)制中斷forEach循環(huán)的方法
這篇文章主要介紹了JavaScript使用類似break機(jī)制中斷forEach循環(huán)的方法,需要的朋友可以參考下2018-11-11淺談JavaScript宏任務(wù)和微任務(wù)執(zhí)行順序
本文主要介紹了JavaScript宏任務(wù)和微任務(wù)執(zhí)行順序,結(jié)合實(shí)例代碼進(jìn)行了詳細(xì)的講解,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06解決uni-app微信小程序input輸入框在底部時(shí),鍵盤彈起頁面整體上移問題
問題是這樣的input?獲取焦點(diǎn)時(shí)會(huì)自動(dòng)調(diào)起手機(jī)鍵盤,設(shè)置?:adjust-position="true",會(huì)導(dǎo)致鍵盤彈起時(shí)頁面整體上移,這篇文章主要介紹了解決uni-app微信小程序input輸入框在底部時(shí),鍵盤彈起頁面整體上移問題,,需要的朋友可以參考下2022-08-08頁面js遇到亂碼問題的解決方法是和無法轉(zhuǎn)碼的情況
在老項(xiàng)目里加些js文件和老項(xiàng)目的編碼格式不一致出現(xiàn)亂碼,由于兩個(gè)文件都不能轉(zhuǎn)格式,于是百度個(gè)不錯(cuò)的方法在此與大家分享下2014-04-04Javascript如何實(shí)現(xiàn)擴(kuò)充基本類型
這篇文章主要介紹了Javascript如何實(shí)現(xiàn)擴(kuò)充基本類型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08