阿拉伯语和英语的正则表达式以及一些有限的特殊字符

时间:2017-07-28 17:05:01

标签: javascript regex match

我需要检测

的正则表达式

1-任何英文字母或

2-任何阿拉伯语字母或

3- both或

4-之间的任何数字(或开始或结束地点无关紧要)

5-最大长度可以是30。

并确保它没有特殊字符,除了(它们可以出现在任何地方)

@,=%$#& _

我的解决方案: 我使用这个正则表达式:

    var regex = /^([a-zA-Z0-9\s@,=%$#&_\u0600-\u06FF]).{0,30}$/;
    var result = regex.test('happy- - - /*  */ % ! ~');
    console.log(result);//prints true and it should print false because of ! and other special characters not allowed

问题

我的解决方案不正确

我的参考资料 对于阿拉伯语我使用 check here # 13 in the list Second reference Third reference

U + 0600-U +叙利亚文

https://jsfiddle.net/shareefhiasat/bdm99b1x/

2 个答案:

答案 0 :(得分:2)

你只需要量化群体,而不是点 这是所有阿拉伯语(Unicode 9)字符的正则表达式 请注意,您刚刚添加了一些英文字符,您的意思是拉丁文吗?

^(?:[a-zA-Z0-9\s@,=%$#&_\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDCF\uFDF0-\uFDFF\uFE70-\uFEFF]|(?:\uD802[\uDE60-\uDE9F]|\uD83B[\uDE00-\uDEFF])){0,30}$

https://jsfiddle.net/pydbqxgb/

扩展

 ^     
 (?:
      [a-zA-Z0-9\s@,=%$#&_\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDCF\uFDF0-\uFDFF\uFE70-\uFEFF] 
   |  
      (?:
           \uD802 [\uDE60-\uDE9F] 
        |  \uD83B [\uDE00-\uDEFF] 
      )
 ){0,30}
 $ 

另一种选择,它使用基本的非控制(仅限空格)拉丁语。

^(?:[\u0009-\u000D\u001C-\u007E\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDCF\uFDF0-\uFDFF\uFE70-\uFEFF]|(?:\uD802[\uDE60-\uDE9F]|\uD83B[\uDE00-\uDEFF])){0,30}$

https://jsfiddle.net/st60dyve/

扩展

 ^     
 (?:
      [\u0009-\u000D\u001C-\u007E\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDCF\uFDF0-\uFDFF\uFE70-\uFEFF] 
   |  
      (?:
           \uD802 [\uDE60-\uDE9F] 
        |  \uD83B [\uDE00-\uDEFF] 
      )
 ){0,30}
 $ 

答案 1 :(得分:0)

将此正则表达式仅用于字母数字英语,阿拉伯语,且不得少于5个字符。

[0-9a-zA-Z\u0600-\u06FF]