RegExp.prototype.unicode
基线 广泛可用
此功能已久,可在许多设备和浏览器版本上使用。它自 2015 年 7 月.
报告反馈
试试
描述
unicode
属性是 RegExp
实例的访问器属性,它返回此正则表达式是否使用 u
标志。
- 如果使用
u
标志,RegExp.prototype.unicode
的值为true
;否则为false
。u
标志启用各种与 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 模式* 时,是指正则表达式具有 u
或 v
标志,在这种情况下,正则表达式启用与 Unicode 相关的功能(如 Unicode 字符类转义)并且具有更严格的语法规则。由于 u
和 v
以不兼容的方式解释相同的正则表达式,因此同时使用这两个标志会导致 SyntaxError
错误。
示例
类似地,如果正则表达式既没有 u
也没有 v
标志,则该正则表达式为 *不支持 Unicode*。在这种情况下,正则表达式被解释为 UTF-16 代码单元序列,并且有许多旧语法不会导致语法错误。
使用 unicode 属性
const regex = /\u{61}/u;
console.log(regex.unicode); // true
规范
js |
---|
规范 # ECMAScript 语言规范 |
浏览器兼容性
sec-get-regexp.prototype.unicode