亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ES6正則表達(dá)式的一些新功能總結(jié)

 更新時間:2017年05月09日 09:56:53   作者:sexy_squirrel  
這篇文章主要總結(jié)了一些關(guān)于ES6正則表達(dá)式的新功能的相關(guān)資料,文中介紹的還是比較詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下來要起看看吧。

本文主要總結(jié)了ES6正則表達(dá)式的一些新功能,分享出來供大家參考學(xué)習(xí),下面來看看詳細(xì)的介紹:

一、構(gòu)造函數(shù)實例化參數(shù)的變化

大家都知道,在ES5中,new RegExp(參數(shù)1,參數(shù)2),參數(shù)1若是指定了正則修飾符,則參數(shù)2就不應(yīng)該出現(xiàn),否則將會報錯,在ES6中,第二個參數(shù)的正則修飾符會覆蓋掉原有的修飾符:

<script>
//在ES5中,下面的正則自帶修飾符ig,則第二個參數(shù)不能出現(xiàn)
var reg = new RegExp(/asd/ig);
//在ES6中,如下:
var reg = new RegExp(/asd/ig,'i');
//i會覆蓋掉原來的ig
</script>

二、u修飾符

u修飾符可以自動識別碼點大于0xFFFF的編碼。只是ES6的新增內(nèi)容!

<script>
/\uD83D/u.test("\uD83D\uDC2A");
//在ES6中會返回false,u修飾符默認(rèn)處理的UTF-16編碼
/\uD83D/.test("\uD83D\uDC2A");
//在ES5中會將test的的參數(shù)拆分成兩個字符,返回true
</script>

另外使用u修飾符需要注意一下幾點:

1. “.”字符

在正則表達(dá)式中,.字符的含義是除了換行符以外的所有字符,如要.字符匹配碼點大于\uFFFF的字符,必須帶u修飾符,否則不能正常識別;

<svcipt>
var s = "��";
//在ES5中
/^.$/.test(s)//false
//在ES6中
/^.$/u.test(s)//true
</script>

2.Unicode字符表示法

ES6中新增使用了大括號表示Unicode字符,這種方法在正則表達(dá)式中必須加上u修飾符才能識別。

<svcipt>
//在ES5中,61會被當(dāng)做量詞使用
/\u{61}/.test("a")//false
//在ES6中
/\u{61}/u.test("a")//true
</script>

3.預(yù)定義模式

u修飾符也影響到預(yù)定義模式,加了u修飾符,才能正確識別碼點大于0xFFFF的Unicode字符。

4.對i修飾符的影響

有些Unicode編碼的字符比較接近,比如大寫的K的編碼有\(zhòng)u004B和\u212A,

<svcipt>
//未添加u修飾
/[a-z]/.test("\u212A")//false
//添加u修飾
/[a-z]/iu.test("\u212A")//true
</script>

三、y修飾符

ES6還新增了一個y修飾符,與通常的g修飾符用法類似,都是用來全局匹配,不同的是y修飾符又叫做“粘連”修飾符,在上一次匹配成功的下一個位置開始匹配,但是下一次開始位置必須要能夠滿足匹配,也就是匹配從剩余的第一個位置開始,這就是“粘連”的含義(個人理解)吧。

舉個例子吧!

<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é)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論