使用JQuery RegExp检查波斯语字符时出现“非法十六进制转义序列错误”错误

时间:2015-07-20 09:47:27

标签: jquery regex persian

我想在JQuery中使用RegExp检查输入字符。人物应该是波斯人,空间或半空间。

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.

2 个答案:

答案 0 :(得分:2)

  

效果很好!

也许,它适用于PCRE,但不适用于JavaScript。请注意您在regex101.com左侧选择的正则表达式。

您需要使用\u表示法与文字:

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

这是demo

另外,请注意,您不需要在字符类周围设置捕获组,然后应用量词:您将失去性能。您可以使用$&反向引用来引用整个匹配。字符类中的|符号被视为文字|符号,而不是替换符号,因此我认为我们最好将其删除。

答案 1 :(得分:0)

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>