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

sha*_*eef 1 javascript regex match

我需要检测的正则表达式

\n\n

1-任何英文字母或

\n\n

2- 任何阿拉伯字母或

\n\n

3- 两者或

\n\n

4- 之间的任何数字(或开始或结束位置并不重要)

\n\n

5-最大长度可为 30。

\n\n

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

\n\n

@,=%$#&_

\n\n

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

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

问题

\n\n

我的解决方案不正确

\n\n

我的参考文献\n对于阿拉伯语,我使用 \n检查列表中的 # 13 \n第二个参考文献\n第三个参考文献

\n\n

U+0600\xe2\x80\x93U+06FF

\n\n

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

\n

小智 5

您只需要量化组,而不是点。
这是所有阿拉伯语 (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}
 $ 
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用基本的非控制(仅限空白)拉丁语。

^(?:[\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}
 $ 
Run Code Online (Sandbox Code Playgroud)