【问题标题】:Unicode code point escapes in regex literals - Javascript正则表达式文字中的 Unicode 代码点转义 - Javascript
【发布时间】:2016-03-27 06:21:16
【问题描述】:

这个正则表达式文字语法能否具有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 代码点转义用于简化与 ES5 兼容的代理对语法,表示代码点值大于FFFF

【问题讨论】:

  • return "????".match(/\u{1d306}/u)[0].length === 2; 测试支持

标签: javascript regex unicode ecmascript-6 unicode-literals


【解决方案1】:

是的,根据the spec,这现在是一个有效的转义序列,但是为了启用支持,您必须在正则表达式定义中包含新的 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

【讨论】:

  • SyntaxError: invalid regular expression flag ufirefox 45.0a2chrome 47.0
  • @overexchange 您可以检查浏览器实现的状态here。 Babel 转译正则表达式,所以可能是目前唯一可行的选择
  • 请注意,当您处理单独的代理时,转译的正则表达式可能无法正常工作。
  • 请注意,\u{XXX} 语法在 IE11 中似乎不受支持(但在 Edge 中很好)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多