ES6 正則的擴充套件 Unicode 屬性類

2021-08-10 03:56:30 字數 1105 閱讀 4958

目前有乙個提案,引入了一種新的類的寫法 \p 和\p,允許正規表示式匹配符合 unicode 某種屬性的所有字元。

const regexgreeksymbol = /\p/u;

regexgreeksymbol.test('π') // true

上面**中,\p 指定匹配乙個希臘字母,所以匹配 π 成功

unicode 屬性累要指定屬性名和屬性值。

\p
對於某些屬性,可以只寫屬性名。

\p
\p 是 \p 的反向匹配,即匹配不滿足條件的字元。

這兩種類只對 unicode 有效,所以使用的時候一定要加上 u 修飾符。如果不加 u 修飾符,正規表示式使用 \p 和 \p 會報錯,ecmascript 預留了這兩個類。

由於 unicode 的各種屬性非常多,所以這種新的類的表達能力非常強。

const regex = /^\p+$/u;

regex.test('123456789') // true

上面**中,屬性類指定匹配所有十進位制字元,可以看到各種字型的十進位制字元都會匹配成功。

\p甚至能匹配羅馬數字。

// 匹配所有數字

const regex = /^\p+$/u;

regex.test('²³¹¼½¾') // true

regex.test('㉛㉜㉝') // true

regex.test('ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻ') // true

下面是其他一些例子。

// 匹配各種文字的所有字母,等同於 unicode 版的 \w

[\p\p\p\p\p]

// 匹配各種文字的所有非字母的字元,等同於 unicode 版的 \w

[^\p\p\p\p\p]

// 匹配所有的箭頭字元

const regexarrows = /^\p+$/u;

regexarrows.test('←↑→↓↔↕↖↗↘↙⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇧⇩') // true

具名組匹配

ES6 正則的擴充套件

一,regexp 建構函式 es5中,regexp建構函式的引數有兩種情況。1,引數是字串,第二個引數表示正規表示式的修飾符 flag 2,引數是乙個正規表示式,返回乙個原有正規表示式的拷貝。es6中,如果regexp建構函式第乙個引數是乙個正則物件,那麼可以使用第二個引數指定修飾符。而且,返回的正...

ES6精華 正則擴充套件

本篇概括了es6中正規表示式新增部分的精華要點 最好有es5的基礎 使正則處於unicode模式。關於es6的字元擴充套件知識,可檢視這裡。處於unicode模式下的正則,可以正確識別32位 四位元組 字元。let c ud83d udc2a 32位字元 console.log s test c f...

es6 語法 (正則擴充套件)

es5中常見修飾符是g i es6中新增 y,u exec 方法用於檢索字串中的正規表示式的匹配。test a false console.log u u.test a true 加上u才能被識別 console.log u let s console.log u test s false cons...