摘要:第二個(gè)參數(shù)指定修飾符,如果存在則使用指定的修飾符。屬性表示是否設(shè)置了修飾符屬性的屬性返回正則表達(dá)式的正文的屬性返回正則表達(dá)式的修飾符字符串必須轉(zhuǎn)義,才能作為正則模式。
1 RegExp構(gòu)造函數(shù)
ES6 允許RegExp構(gòu)造函數(shù)接受正則表達(dá)式作為參數(shù)。第二個(gè)參數(shù)指定修飾符,如果存在則使用指定的修飾符。
var regexp = new RegExp(/xyz/i, "ig"); console.log(regexp.flags); //gi2 字符串的正則方法
字符串對(duì)象的4個(gè)使用正則表達(dá)式的方法: match(),replace(),search(),split()這四個(gè)方法全部調(diào)用RegExp的實(shí)例的方法。
3 u修飾符ES6對(duì)正則表達(dá)式添加了u修飾符,含義為“Unicode模式”,用來(lái)正確處理大于uFFFF的Unicode字符;
/^uD83D/u.test("uD83DuDC2A") // false /^uD83D/.test("uD83DuDC2A") // true
一旦加上u修飾符號(hào),就會(huì)修改下面這些正則表達(dá)式的行為:
點(diǎn)字符
點(diǎn)(.)字符不能識(shí)別碼點(diǎn)大于0xFFFF的Unicode字符,必須加上u修飾符。
var s = "?"; /^.$/.test(s) // false /^.$/u.test(s) // true
Unicode字符表示法
大括號(hào)表示Unicode字符,只有加上u才能識(shí)別
/u{61}/.test("a") // false /u{61}/u.test("a") // true /u{20BB7}/u.test("?") // true
量詞
使用u修飾符后,所有量詞都會(huì)正確識(shí)別大于碼點(diǎn)大于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都是大寫(xiě)的K。
/[a-z]/i.test("u212A") // false /[a-z]/iu.test("u212A") // true4 y修飾符
除了u修飾符,ES6還為正則表達(dá)式添加了y修飾符,叫做“粘連”(sticky)修飾符。
y修飾符的作用與g修飾符類(lèi)似,不同之處在于,g修飾符只要剩余位置中存在匹配就可,而y修飾符確保匹配必須從剩余的第一個(gè)位置開(kāi)始,這也就是“粘連”的涵義。
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屬性
表示是否設(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79074.html
摘要:正則表達(dá)式一個(gè)描述字符模式的對(duì)象正則表達(dá)式的定義構(gòu)造函數(shù)正則表達(dá)式直接量一對(duì)斜杠新特性正則的擴(kuò)展引用類(lèi)型類(lèi)型的注意要點(diǎn)用于模式匹配的方法不支持全局搜索忽略表達(dá)式參數(shù)中的修飾符兩個(gè)參數(shù)第一個(gè)是正則表達(dá)式,第二個(gè)是要替換的字符串接收一個(gè)正則表達(dá) 正則表達(dá)式(regular expression):一個(gè)描述字符模式的對(duì)象 1 正則表達(dá)式的定義 RegExp()構(gòu)造函數(shù) 正則表達(dá)式直接量(一...
摘要:基本用法所聲明的變量,只在命令所在的代碼塊內(nèi)有效。在循環(huán)中適合使用不存在變量提升不像那樣會(huì)發(fā)生變量提升現(xiàn)象暫時(shí)性死區(qū)只要塊級(jí)作用域內(nèi)存在命令,它所聲明的變量就綁定這個(gè)區(qū)域,不再受外部的影響。塊級(jí)作用域?qū)嶋H上為新增了塊級(jí)作用域。 1 let 基本用法 所聲明的變量,只在let命令所在的代碼塊內(nèi)有效。 { let b = 100; console.log(b); //100...
摘要:二進(jìn)制和八進(jìn)制表示法提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫(xiě)法,分別用前綴或和或表示。用來(lái)檢查是否為有窮以及是否為這兩個(gè)新方法只對(duì)數(shù)值有效,非數(shù)值一律返回。引入了和這兩個(gè)常量,用來(lái)表示這個(gè)范圍的上下限。因?yàn)橛芯认拗疲^(guò)的次方的值無(wú)法精確表示。 1 二進(jìn)制和八進(jìn)制表示法 ES6提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫(xiě)法,分別用前綴0b(或0B)和0o(或0O)表示。 console.log(0b10...
摘要:數(shù)組的解構(gòu)賦值允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱(chēng)為解構(gòu)。如果變量名與屬性名不一致,必須寫(xiě)成下面這樣。 1 數(shù)組的解構(gòu)賦值 ES6允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱(chēng)為解構(gòu)(Destructuring)。 基本用法 { var [a,[b,c],d,,...f] = [1,[2,3],4,5,6,7]; console...
摘要:吉字符串的遍歷器接口為字符串添加了遍歷器接口,使得字符串可以被循環(huán)遍歷。提供字符串實(shí)例的方法,用來(lái)將字符的不同表示方法統(tǒng)一為同樣的形式,這稱(chēng)為正規(guī)化。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。 1 字符串的Unicode表示法 ES6 只要將碼點(diǎn)放入大括號(hào),就能正確解讀該字符; var x = u20bb7; document.write(x); //?7 var x = u{2...
閱讀 867·2023-04-26 00:13
閱讀 2986·2021-11-23 10:08
閱讀 2488·2021-09-01 10:41
閱讀 2150·2021-08-27 16:25
閱讀 4262·2021-07-30 15:14
閱讀 2412·2019-08-30 15:54
閱讀 893·2019-08-29 16:22
閱讀 2775·2019-08-26 12:13