问题描述
MDN website 给出了具有 unicode 支持的匹配模式的示例,例如
它作为一个片段在 stackoverflow 上运行良好。
但是,在 javascript codesandbox 中,代码抛出错误:
/src/index.js:未知属性:Sc
另一方面,在 regex101 网站上,模式与句子正确匹配,具有 ECMAScript 风格和“gu”标志。
此外,在我现实世界的 Next.js
Typescript
项目中,直到昨天我将所有依赖项升级到最新版本时,模式 /\P{L}/gu
都运行良好。现在它在 tsconfig.json 中将 strict
模式设置为 true 时抛出类似的错误。 strict
模式设置为 false 时它仍然可以正常工作。
为什么会发生此错误以及如何在代码中使用 /\p{Sc}|\p{P}/gu
或 /\P{L}/gu
正则表达式模式?
解决方法
基于 the documentation,Sc
是一个非二进制属性。这意味着您不能只使用 \p{Sc}
;您必须使用 \p{Sc=some_script_name}
,其中脚本名称取自 here。