摘要:第二個參數指定修飾符,如果存在則使用指定的修飾符。屬性表示是否設置了修飾符屬性的屬性返回正則表達式的正文的屬性返回正則表達式的修飾符字符串必須轉義,才能作為正則模式。
1 RegExp構造函數
ES6 允許RegExp構造函數接受正則表達式作為參數。第二個參數指定修飾符,如果存在則使用指定的修飾符。
var regexp = new RegExp(/xyz/i, "ig"); console.log(regexp.flags); //gi2 字符串的正則方法
字符串對象的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") // true4 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) // null5 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
摘要:正則表達式一個描述字符模式的對象正則表達式的定義構造函數正則表達式直接量一對斜杠新特性正則的擴展引用類型類型的注意要點用于模式匹配的方法不支持全局搜索忽略表達式參數中的修飾符兩個參數第一個是正則表達式,第二個是要替換的字符串接收一個正則表達 正則表達式(regular expression):一個描述字符模式的對象 1 正則表達式的定義 RegExp()構造函數 正則表達式直接量(一...
摘要:基本用法所聲明的變量,只在命令所在的代碼塊內有效。在循環中適合使用不存在變量提升不像那樣會發生變量提升現象暫時性死區只要塊級作用域內存在命令,它所聲明的變量就綁定這個區域,不再受外部的影響。塊級作用域實際上為新增了塊級作用域。 1 let 基本用法 所聲明的變量,只在let命令所在的代碼塊內有效。 { let b = 100; console.log(b); //100...
摘要:二進制和八進制表示法提供了二進制和八進制數值的新的寫法,分別用前綴或和或表示。用來檢查是否為有窮以及是否為這兩個新方法只對數值有效,非數值一律返回。引入了和這兩個常量,用來表示這個范圍的上下限。因為有精度限制,超過的次方的值無法精確表示。 1 二進制和八進制表示法 ES6提供了二進制和八進制數值的新的寫法,分別用前綴0b(或0B)和0o(或0O)表示。 console.log(0b10...
摘要:數組的解構賦值允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構。如果變量名與屬性名不一致,必須寫成下面這樣。 1 數組的解構賦值 ES6允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構(Destructuring)。 基本用法 { var [a,[b,c],d,,...f] = [1,[2,3],4,5,6,7]; console...
摘要:吉字符串的遍歷器接口為字符串添加了遍歷器接口,使得字符串可以被循環遍歷。提供字符串實例的方法,用來將字符的不同表示方法統一為同樣的形式,這稱為正規化。返回布爾值,表示參數字符串是否在源字符串的頭部。 1 字符串的Unicode表示法 ES6 只要將碼點放入大括號,就能正確解讀該字符; var x = u20bb7; document.write(x); //?7 var x = u{2...
閱讀 834·2023-04-26 00:13
閱讀 2836·2021-11-23 10:08
閱讀 2455·2021-09-01 10:41
閱讀 2121·2021-08-27 16:25
閱讀 4205·2021-07-30 15:14
閱讀 2367·2019-08-30 15:54
閱讀 867·2019-08-29 16:22
閱讀 2744·2019-08-26 12:13