TypeScript 中的此正则表达式方言不允许类别简写

20 regex typescript

我尝试在 TypeScript 中使用正则表达式:

const pass = /^[\pL\pM\pN_-]+$/u.test(control.value) || !control.value;
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

Typescript 中的此正则表达式方言不允许类别简写

为什么我会收到此错误,如何修复它?

Cer*_*rus 19

\pL不允许使用正则表达式简写 ( )。

您需要使用完整版本 ( \p{L}),而不是简写:

const pass = /^[\p{L}\p{M}\p{N}_-]+$/u.test(control.value) || !control.value;
Run Code Online (Sandbox Code Playgroud)

  • @JuanMendes JavaScript 不支持简短版本,请参阅[Unicode 属性转义](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes)。我不知道 TypeScript 支持的详细信息,但它似乎只是依赖于 JavaScript 中的底层 Unicode 属性转义支持,并带有更具描述性的错误消息。FF 上的 JavaScript 中的错误消息是“Uncaught SyntaxError:正则表达式中的类属性名称无效”。 (8认同)
  • @JuanMendes:正则表达式是等效的,只是不支持简写。 (2认同)