国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ECMAScript6 新特性——“正則的擴展”

Shisui / 2163人閱讀

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

1 RegExp構造函數

ES6 允許RegExp構造函數接受正則表達式作為參數。第二個參數指定修飾符,如果存在則使用指定的修飾符。

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

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

3 u修飾符

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

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

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

點字符

點(.)字符不能識別碼點大于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

預定義模式

u修飾符也影響到預定義模式

/^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還為正則表達式添加了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屬性

表示是否設置了y修飾符

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

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

字符串必須轉義,才能作為正則模式。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79074.html

相關文章

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

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

    李世贊 評論0 收藏0
  • ECMAScript6 特性——“let和const命令”

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

    PascalXie 評論0 收藏0
  • ECMAScript6 特性——“數值擴展

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

    Dean 評論0 收藏0
  • ECMAScript6 特性——“變量解構賦值”

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

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

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

    BlackMass 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<