"Illegal hexadecimal escape sequence error" 使用 JQuery 正则表达式检查波斯语字符时出错

"Illegal hexadecimal escape sequence error" error while checking Persian characters with JQuery RegExp

我想在 JQuery 中使用 RegExp 检查输入的字符。字符应为波斯语、space 或半-space.

var pattern = new RegExp(/^([\x{0600}-\x{06FF}| |\x{200C}])+$/);
if(!pattern.test(name)){
    console.log('error');
}

我在online regex test

中检查了这段代码

而且效果很好!但是,当我在我的代码中编写它时,它无法正常工作并显示语法错误。 PHPStorm 通知我这个错误:

Illegal hexadecimal escape sequence error.

It works well!

也许它适用于 PCRE,但不适用于 JavaScript。请注意您在 regex101.com.

左侧选择的正则表达式风格

您需要使用带有文字的 \u 符号:

var pattern = /^[\u0600-\u06FF\u200C ]+$/; 

这是一个demo

另外请注意,您不需要围绕字符设置捕获组 class 然后应用量词:这样会降低性能。您可以使用 $& 反向引用来引用整个匹配项。字符 class 中的 | 符号被视为文字 | 符号,而不是交替符号,所以我想我们最好将其删除。

function testreg(name){
var pattern = new RegExp("^([\u0600-\u06FF\u200C ])+$");
if(!pattern.test(name)){
    alert('error');
  }
  else{alert('ok');}
}
<button onclick="testreg('1394/04/29')">testreg</button>