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

資訊專欄INFORMATION COLUMN

ES6入門之正則的擴(kuò)展

jifei / 2632人閱讀

摘要:正則的擴(kuò)展參數(shù)為字符串,那么第二個(gè)參數(shù)表示正則表達(dá)式的修飾符,如下等價(jià)于參數(shù)為一個(gè)正則表達(dá)式,這時(shí)返回一個(gè)原有正則表達(dá)式的拷貝。如下調(diào)用調(diào)用調(diào)用調(diào)用修飾符對(duì)正則表達(dá)式添加了修飾符,用來正確處理大于的字符。

1. 正則的擴(kuò)展

參數(shù)為字符串, 那么第二個(gè)參數(shù)表示正則表達(dá)式的修飾符,如下:

var regex = new RegExp("xyz", "i")  
// 等價(jià)于
var regex = /xyz/i

參數(shù)為一個(gè)正則表達(dá)式,這時(shí)返回一個(gè)原有正則表達(dá)式的拷貝。如下:

var regex = new RegExp(/xyz/i)
// 等價(jià)于
var regex = /xyz/i

Es6中改變了這種行文。如果RegExp構(gòu)造函數(shù)第一個(gè)參數(shù)是正則對(duì)象,那第二個(gè)參數(shù)可以指定修飾符,并且返回的正則表達(dá)式會(huì)忽略原有正則表達(dá)式的修飾符,只使用新指定的修飾符。 如下:

new RegExp(/abc/ig, "i").flags
// 原有的ig 被 i 覆蓋
2. 字符串的正則方法
字符串對(duì)象共有4個(gè)方法,可以使用正則表達(dá)式: match()、 replace()、search() 和 split()。在Es6中  全部調(diào)用RegExp的實(shí)例方法,全部定義在RegExp對(duì)象上。如下:
String.prototype.match 調(diào)用 RegExp.prototype[Symbol.match]
String.prototype.replace 調(diào)用 RegExp.prototype[Symbol.replace]
String.prototype.search 調(diào)用 RegExp.prototype[Symbol.search]
String.prototype.split 調(diào)用 RegExp.prototype[Symbol.split
3. u 修飾符
ES6 對(duì)正則表達(dá)式添加了 u 修飾符,用來正確處理大于uFFFF的Unicode字符。如下:
/^uD83D/u.test("uD83DuDC2A") // false
/^uD83D/.test("uD83DuDC2A") // true
// 如上代碼因?yàn)樵贓S5中 不支持四個(gè)字節(jié)的 UTF-16編碼,會(huì)將為識(shí)別為兩個(gè)字符 導(dǎo)致 第二行為true
但是加了 u 修飾符后,ES6將為識(shí)別為一個(gè)字符,所以第一行為flase
4. RegExp.prototype.unicode 屬性
正則實(shí)例對(duì)象新增 unicode 屬性,用來判斷表示是否設(shè)置了u修飾符,如下:
const r1 = /hello/;
const r2 = /hello/u;

r1.unicode // false
r2.unicode // true
5. y 修飾符
和 g 修飾符相似,全局匹配,但是下次匹配都是從上次匹配成功的下一個(gè)位置開始。而g 只要剩余位置中存在匹配即可,y 必須從剩余的第一個(gè)位置開始。如下:
var s = "aaa_aa_a";
var r1 = /a+/g;
var r2 = /a+/y;

r1.exec(s) // ["aaa"]
r2.exec(s) // ["aaa"]

r1.exec(s) // ["aa"]
r2.exec(s) // null

// 第一次執(zhí)行后 為 _aa_a g 只要剩余位置存在即可匹配,返回 aa
// y 則是從上一次結(jié)果后的第一個(gè)位置開始,因?yàn)槭莀 所以返回null
6. RegExp.prototype.sticky 屬性
與y修飾符相匹配,ES6 的正則實(shí)例對(duì)象多了sticky屬性,表示是否設(shè)置了y修飾符 如下:
var r = /hellod/y;
r.sticky // true
7. RegExp.prototype.flags 屬性
ES6 為正則表達(dá)式新增了flags屬性,會(huì)返回正則表達(dá)式的修飾符。
// ES5 的 source 屬性
// 返回正則表達(dá)式的正文
/abc/ig.source
// "abc"

// ES6 的 flags 屬性
// 返回正則表達(dá)式的修飾符
/abc/ig.flags
// "gi"
8. s 修飾符:dotAll 模式
匹配的是任意單個(gè)字符,用來匹配任意單個(gè)字符,如下:
/foo.bar/s.test("foo
bar") // true
9. Unicode 屬性類
ES2018 引入了一種新的類的寫法p{...}和P{...},允許正則表達(dá)式匹配符合 Unicode 某種屬性的所有字符。
const regexGreekSymbol = /p{Script=Greek}/u;
regexGreekSymbol.test("π") // true
10. 具名組匹配
正常多個(gè)匹配 可能用圓括號(hào)包起,如下:
const RE_DATE = /(d{4})-(d{2})-(d{2})/;

const matchObj = RE_DATE.exec("1999-12-31");
const year = matchObj[1]; // 1999
const month = matchObj[2]; // 12
const day = matchObj[3]; // 31

但是以上的寫法不容易看懂,理解較為困難,而且只能用數(shù)字序號(hào),另外如果數(shù)組順序變了,還需要修改引用的序號(hào)。所以就有了具名組匹配。允許為每一個(gè)組匹配指定一個(gè)名字,既便于閱讀代碼,又便于引用。即使組的順序變了,葉不用去更改匹配后的處理代碼。如下:

const RE_DATE = /(?d{4})-(?d{2})-(?d{2})/;

const matchObj = RE_DATE.exec("1999-12-31");
const year = matchObj.groups.year; // 1999
const month = matchObj.groups.month; // 12
const day = matchObj.groups.day; // 31

// 格式: “具名組匹配”在圓括號(hào)內(nèi)部,模式的頭部添加“問號(hào) + 尖括號(hào) + 組名”(?
11. String.prototype.matchAll
如果一個(gè)正則表達(dá)式在一個(gè)字符串中有多個(gè)匹配,現(xiàn)在使用的是 g 修飾符 或者 y 修飾符 循環(huán) 取出?,F(xiàn)在有了新的提案。就是用 String.prototype.matchAll 一次性取出,但是它返回的不是一個(gè)數(shù)組,而是一個(gè)遍歷器。然后可以用 for ... of 取出。

歡迎關(guān)注 公眾號(hào)【小夭同學(xué)】

ES6入門系列

ES6入門之let、cont

ES6入門之變量的解構(gòu)賦值

ES6入門之字符串的擴(kuò)展

Git教程

前端Git基礎(chǔ)教程

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103793.html

相關(guān)文章

  • ES6入門對(duì)象擴(kuò)展

    摘要:循環(huán)遍歷對(duì)象自身的和繼承的可枚舉屬性不含屬性。返回一個(gè)數(shù)組,包含對(duì)象自身的所有屬性的鍵名。目前,只有對(duì)象方法的簡(jiǎn)寫法可以讓引擎確認(rèn),定義的是對(duì)象的方法。showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada8456223b0e1); 1. 屬性的簡(jiǎn)潔表示法 在ES6中 允許直接寫入變量和函數(shù),作為對(duì)象的屬性和方法,使得代碼的書寫更為簡(jiǎn)潔。...

    RiverLi 評(píng)論0 收藏0
  • ES6入門對(duì)象擴(kuò)展

    摘要:屬性的簡(jiǎn)潔表示法在中允許直接寫入變量和函數(shù),作為對(duì)象的屬性和方法,使得代碼的書寫更為簡(jiǎn)潔。循環(huán)遍歷對(duì)象自身的和繼承的可枚舉屬性不含屬性。返回一個(gè)數(shù)組,包含對(duì)象自身的所有屬性的鍵名。 showImg(https://segmentfault.com/img/remote/1460000019259004?w=1282&h=1920); 1. 屬性的簡(jiǎn)潔表示法 在ES6中 允許直接寫入變量...

    AWang 評(píng)論0 收藏0
  • ES6入門數(shù)值擴(kuò)展

    摘要:用來表示與大于的最小浮點(diǎn)數(shù)之間的差,實(shí)際上就是能夠表示的最小精度。對(duì)象的擴(kuò)展在對(duì)象上新增了個(gè)與數(shù)學(xué)相關(guān)的方法。用于去除一個(gè)數(shù)的小樹部分,返回整數(shù)部分。對(duì)于非數(shù)值,則用方法將其轉(zhuǎn)換為數(shù)值,對(duì)于空值和無法截取整數(shù)的值,返回。返回以為底的的對(duì)數(shù)。 showImg(https://segmentfault.com/img/bVbrTG6?w=1080&h=1080); 1. 二進(jìn)制和八進(jìn)制表示...

    tyheist 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<