2017-04-13 33 views
-1

我正在尝试编写Reg表达式来检查语言是英语还是阿拉伯语。RegExp表达式接受所有特殊字符的字母数字值

我的被测字段用于捕获短信。该消息可以

English with numbers & special characters 

OR 

Arabic with English numbers/Arabic numbers & special characters 

搜索应该是对多收纳空间&进入。 检查是分配每种语言允许的字符数。例如:英语允许160;而阿拉伯语只允许70%的短信

我承担的EXP应该只检查的话(前几个决定语言)

这里是什么,我在JavaScript写了一个样本;正则表达式没有工作,唯一的正则表达式:

var pat = new RegExp("^[A-Za-z0-9\[email protected]#$%^&*()_+=-`~\\\]\[{}|';:/.,?><]*$"); 

但对于以下字符串失败:

"Hello & Hi" 

有什么建议?

+1

当使用构造,双反斜线逃逸。 '\ s' ==>'\\ s'。在字符类中,'-'具有特殊的含义。要从字面上匹配'-',你需要转义它。 – Tushar

+0

检查[Javascript正则表达式允许在阿拉伯语的特定字符](http://stackoverflow.com/questions/35577540/javascript-regex-to-allow-specific-characters-in-arabic/35581928#35581928)和[如何转换PHP正则表达式来匹配阿拉伯字符到JS正则表达式](http://stackoverflow.com/questions/35036946/how-to-convert-php-regex-to-js-regex/35037002#35037002)。另外,把'-'放在角色类的开始/结尾处,或者按照Tushar的建议逃避它。 –

+0

或者更好的是,当你可以使用文字形式时,不要使用'new RegExp','/ regexhere /'。 –

回答

0

var regex=/^[ -~]+$/; 
 
var str='Hello & Hi'; 
 
console.info(regex.test(str));
你可以这样写太

+0

更好!谢谢两个答案都是正确的 –

0

既然你是从字符串创建正则表达式,你需要转义\字符使用\s。此外,您应该转义-或者在您不使用它来定义字符范围时关闭]之前将其放好。

var re = new RegExp("^[A-Za-z0-9\\[email protected]#$%^&*()_+=\-`~\\\]\[{}|';:/.,?><]*$"); 
 
console.log(re.test("Hello & Hi"));

+0

谢谢,完美无缺!只是我在最后加了连字符。 –

相关问题