正则表达式字面量中的Unicode代码点转义 - Javascript

4

这个正则表达式字面量语法可以使用 Unicode转义序列 语法进行编写:

var regpat= /^[\u0041-\u005A\u0061-\u007A\.\' \-]{2,15}/;

使用 Unicode码点转义 语法是否可以编写如下所示的正则表达式呢?

var regpat= /^[\u{41}-\u{5A}\u{61}-\u{7A}\u{1F4A9}\.\' \-]{2,15}/;

注意:Unicode码点转义用于简化表示大于FFFF的码点值的ES5兼容替代对语法。


返回 "".match(/\u{1d306}/u)[0].length === 2; 以测试支持情况。 - Dean Taylor
1个回答

4
是的,根据规范,这现在是一个有效的转义序列,但是为了启用支持,您必须在正则表达式定义中包含新的 u 标记:
var regpat = /^[\u{41}-\u{5A}\u{61}-\u{7A}\u{1F4A9}\.\' \-]{2,15}/u;
console.log(regpat.test("\u{41}\u{61}}"))

"

Babel REPL

"翻译成中文是:"

{{链接1:Babel REPL}}

"。

SyntaxError: invalid regular expression flag ufirefox 45.0a2chrome 47.0 上。 - overexchange
@overexchange 你可以在这里检查浏览器实现的状态(https://kangax.github.io/compat-table/es6/#test-RegExp_y_and_u_flags)。Babel转译正则表达式,因此现在可能是唯一可行的选项。 - CodingIntrigue
请注意,当您处理单个代理项时,转译的正则表达式可能无法正常工作。 - nhahtdh
请注意,\u{XXX} 语法在 IE11 中似乎不受支持(在 Edge 中确实正常)。 - Dmitry Pashkevich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接