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

标签 javascript regex match

我需要检测的正则表达式

1-任何英文字母或

2- 任何阿拉伯字母或

3- 两者或

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+06FF

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

最佳答案

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

关于javascript - 阿拉伯语和英语的正则表达式以及一些有限的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45378916/

相关文章:

PHP 匹配至少两种流派 (mysql)

python - 提取不同表中2列之间的常用词python

javascript - Angular 1.x Ng-If 语句适用于 && 但不适用于 ||,为什么?

javascript - d3 时间序列,从数据中读取日期,按日期计算条目

javascript - Google Sheets Apps 脚本用于确定 Telegram 群组中的管理员

python复合正则表达式提取不同文档中不同标签之间的文本

python - 提取数字和单词之间的文本

java - 我无法在java中分割字符串?

regex - 查找重复项(正则表达式)

javascript - 修改谷歌表格脚本以复制值而不是公式