RegExp.prototype.unicode

基线 广泛可用

此功能已久,可在许多设备和浏览器版本上使用。它自 2015 年 7 月.

报告反馈

试试

描述

unicode 属性是 RegExp 实例的访问器属性,它返回此正则表达式是否使用 u 标志。

  • 如果使用 u 标志,RegExp.prototype.unicode 的值为 true;否则为 falseu 标志启用各种与 Unicode 相关的功能。使用 "u" 标志
  • 所有 Unicode 代码点转义 (\u{xxxx}\p{UnicodePropertyValue}) 将被解释为代码点转义,而不是标识转义。例如 /\u{61}/u 匹配 "a",但 /\u{61}/(不带 u 标志)匹配 "u".repeat(61),其中 \u 等效于单个 u
  • 代理对将被解释为完整的字符,而不是两个独立的字符。例如,/[😄]/u 只匹配 "😄",但不匹配 "\ud83d"

lastIndex 自动前进时(例如,调用 exec() 时),Unicode 正则表达式将按 Unicode 代码点而不是 UTF-16 代码单元前进。

解析行为的其他变化可以防止可能的语法错误(类似于正则表达式语法的 严格模式)。这些语法全部 已弃用,仅出于 Web 兼容性保留,你不应依赖它们。

unicode 的设置访问器为 undefined。你不能直接更改此属性。

支持 Unicode 模式

当我们提到 *支持 Unicode 模式* 时,是指正则表达式具有 uv 标志,在这种情况下,正则表达式启用与 Unicode 相关的功能(如 Unicode 字符类转义)并且具有更严格的语法规则。由于 uv 以不兼容的方式解释相同的正则表达式,因此同时使用这两个标志会导致 SyntaxError 错误。

示例

类似地,如果正则表达式既没有 u 也没有 v 标志,则该正则表达式为 *不支持 Unicode*。在这种情况下,正则表达式被解释为 UTF-16 代码单元序列,并且有许多旧语法不会导致语法错误。

使用 unicode 属性
const regex = /\u{61}/u;

console.log(regex.unicode); // true

规范

js
规范
# ECMAScript 语言规范

浏览器兼容性

sec-get-regexp.prototype.unicode

另请参阅