TypeScript正则报错Category shorthand not allowed的原因及解决方法
报错原因
ECMAScript 正则规范不支持 \pL、\pM、\pN 这类单字母的 Unicode 类别简写形式,必须使用完整的属性名才可以配合u标志完成 Unicode 属性匹配,你使用的简写语法属于其他正则方言的特性,不被 TypeScript 对应的 JS 运行环境支持。
修复方案
将正则中的简写 Unicode 属性替换为标准全称即可,原有匹配逻辑完全不变:
const pass = /^[\p{Letter}\p{Mark}\p{Number}_-]+$/u.test(control.value) || !control.value;
\p{Letter}对应原\pL,匹配所有语言的字母字符\p{Mark}对应原\pM,匹配所有变音标记类字符\p{Number}对应原\pN,匹配所有语种的数字字符
如果你的运行环境版本过低不支持 Unicode 属性转义,可以将正则替换为等价的 ASCII 范围写法(仅支持英文、数字):
const pass = /^[a-zA-Z0-9_-]+$/.test(control.value) || !control.value;
内容的提问来源于stack exchange,提问作者user17202055
相关产品推荐
相关产品推荐

