成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

ECMAScript6 新特性——“正則的擴(kuò)展”

Shisui / 2225人閱讀

摘要:第二個參數(shù)指定修飾符,如果存在則使用指定的修飾符。屬性表示是否設(shè)置了修飾符屬性的屬性返回正則表達(dá)式的正文的屬性返回正則表達(dá)式的修飾符字符串必須轉(zhuǎn)義,才能作為正則模式。

1 RegExp構(gòu)造函數(shù)

ES6 允許RegExp構(gòu)造函數(shù)接受正則表達(dá)式作為參數(shù)。第二個參數(shù)指定修飾符,如果存在則使用指定的修飾符。

var regexp = new RegExp(/xyz/i, "ig");
console.log(regexp.flags); //gi
2 字符串的正則方法

字符串對象的4個使用正則表達(dá)式的方法: match(),replace(),search(),split()這四個方法全部調(diào)用RegExp的實例的方法。

3 u修飾符

ES6對正則表達(dá)式添加了u修飾符,含義為“Unicode模式”,用來正確處理大于uFFFF的Unicode字符;

/^uD83D/u.test("uD83DuDC2A")
// false
/^uD83D/.test("uD83DuDC2A")
// true

一旦加上u修飾符號,就會修改下面這些正則表達(dá)式的行為:

點字符

點(.)字符不能識別碼點大于0xFFFF的Unicode字符,必須加上u修飾符。

var s = "?";

/^.$/.test(s) // false
/^.$/u.test(s) // true

Unicode字符表示法

大括號表示Unicode字符,只有加上u才能識別

/u{61}/.test("a") // false
/u{61}/u.test("a") // true
/u{20BB7}/u.test("?") // true

量詞

使用u修飾符后,所有量詞都會正確識別大于碼點大于0xFFFF的Unicode字符。

/a{2}/.test("aa") // true
/a{2}/u.test("aa") // true
/?{2}/.test("??") // false
/?{2}/u.test("??") // true

預(yù)定義模式

u修飾符也影響到預(yù)定義模式

/^S$/.test("?") // false
/^S$/u.test("?") // true

i修飾符

有些Unicode字符的編碼不同,但是字型很相近,比如,u004B與u212A都是大寫的K。

/[a-z]/i.test("u212A") // false
/[a-z]/iu.test("u212A") // true
4 y修飾符

除了u修飾符,ES6還為正則表達(dá)式添加了y修飾符,叫做“粘連”(sticky)修飾符。

y修飾符的作用與g修飾符類似,不同之處在于,g修飾符只要剩余位置中存在匹配就可,而y修飾符確保匹配必須從剩余的第一個位置開始,這也就是“粘連”的涵義。

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
5 sticky屬性

表示是否設(shè)置了y修飾符

6 flags屬性
// ES5的source屬性
// 返回正則表達(dá)式的正文
/abc/ig.source
// "abc"

// ES6的flags屬性
// 返回正則表達(dá)式的修飾符
/abc/ig.flags
// "gi"
7 RegExp.escape()

字符串必須轉(zhuǎn)義,才能作為正則模式。

function escapeRegExp(str) {
  return str.replace(/[-[]/{}()*+?.^$|]/g, "$&");
}

let str = "/path/to/resource.html?search=query";
escapeRegExp(str)
// "/path/to/resource.html?search=query"

上面的代碼和墊片模塊regexp.escape都可以https://github.com/ljharb/regexp.escape

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/79074.html

相關(guān)文章

  • JS語言核心——“正則表達(dá)式模式匹配”

    摘要:正則表達(dá)式一個描述字符模式的對象正則表達(dá)式的定義構(gòu)造函數(shù)正則表達(dá)式直接量一對斜杠新特性正則的擴(kuò)展引用類型類型的注意要點用于模式匹配的方法不支持全局搜索忽略表達(dá)式參數(shù)中的修飾符兩個參數(shù)第一個是正則表達(dá)式,第二個是要替換的字符串接收一個正則表達(dá) 正則表達(dá)式(regular expression):一個描述字符模式的對象 1 正則表達(dá)式的定義 RegExp()構(gòu)造函數(shù) 正則表達(dá)式直接量(一...

    李世贊 評論0 收藏0
  • ECMAScript6 特性——“l(fā)et和const命令”

    摘要:基本用法所聲明的變量,只在命令所在的代碼塊內(nèi)有效。在循環(huán)中適合使用不存在變量提升不像那樣會發(fā)生變量提升現(xiàn)象暫時性死區(qū)只要塊級作用域內(nèi)存在命令,它所聲明的變量就綁定這個區(qū)域,不再受外部的影響。塊級作用域?qū)嶋H上為新增了塊級作用域。 1 let 基本用法 所聲明的變量,只在let命令所在的代碼塊內(nèi)有效。 { let b = 100; console.log(b); //100...

    PascalXie 評論0 收藏0
  • ECMAScript6 特性——“數(shù)值擴(kuò)展

    摘要:二進(jìn)制和八進(jìn)制表示法提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫法,分別用前綴或和或表示。用來檢查是否為有窮以及是否為這兩個新方法只對數(shù)值有效,非數(shù)值一律返回。引入了和這兩個常量,用來表示這個范圍的上下限。因為有精度限制,超過的次方的值無法精確表示。 1 二進(jìn)制和八進(jìn)制表示法 ES6提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫法,分別用前綴0b(或0B)和0o(或0O)表示。 console.log(0b10...

    Dean 評論0 收藏0
  • ECMAScript6 特性——“變量解構(gòu)賦值”

    摘要:數(shù)組的解構(gòu)賦值允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)。如果變量名與屬性名不一致,必須寫成下面這樣。 1 數(shù)組的解構(gòu)賦值 ES6允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。 基本用法 { var [a,[b,c],d,,...f] = [1,[2,3],4,5,6,7]; console...

    Eric 評論0 收藏0
  • ECMAScript6 特性——“字符串擴(kuò)展

    摘要:吉字符串的遍歷器接口為字符串添加了遍歷器接口,使得字符串可以被循環(huán)遍歷。提供字符串實例的方法,用來將字符的不同表示方法統(tǒng)一為同樣的形式,這稱為正規(guī)化。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。 1 字符串的Unicode表示法 ES6 只要將碼點放入大括號,就能正確解讀該字符; var x = u20bb7; document.write(x); //?7 var x = u{2...

    BlackMass 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<