为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式 带或不带特殊字符的阿拉伯字母

正则表达式 带或不带特殊字符的阿拉伯字母

慕桂英3389331 2023-07-20 17:38:33
我有以下正则表达式来匹配阿拉伯字母。我还想接受以下字符,.()-和空格字符,但是现在它使用布尔值或在组之间,阿拉伯字母应该是强制符,因此它不会接受例如仅空格或上面列出的任何字符。不应匹配没有阿拉伯字母的字符 ,()-应该匹配.()-,سشييتنسشايسشييتنسشاي.(ي)-,^([\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufbc1]|[\ufbd3-\ufd3f]|[\ufd50-\ufd8f]|[\ufd92-\ufdc7]|[\ufe70-\ufefc]|[\ufdf0-\ufdfd])*$
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

如果我没看错的话,规则是:

  1. 必须至少有一个阿拉伯文字字符

  2. 必须仅包含阿拉伯文字、空格和,.()-

如果是这样,您想要:

  • 对字符串中某个位置的阿拉伯字符进行正向预测,并结合

  • ^$锚点要求它们之间的所有内容都是阿拉伯语或.,()-或空格

如果是这样,您可以使用 Unicode 属性转义(ES2018+,在最新的 Firefox、Chrome/Chromium、Safari、Brave 和 Edge [v79+] 中受支持;或者您可以使用 http://xregexp.com 等库) / ):

const rex = /^(?=.*?\p{Script_Extensions=Arabic})[- ().,\p{Script_Extensions=Arabic}]+$/u;

实例:

const rex = /^(?=.*?\p{Script_Extensions=Arabic})[- ().,\p{Script_Extensions=Arabic}]+$/u;


const shouldNotMatch = [" ", ",()-"];


const shouldMatch = ["سشييتنسشاي", ".()-,سشييتنسشاي", "سشييتنسشاي.(ي)-,"];


for (const str of shouldNotMatch) {

    const result = rex.test(str);

    console.log(str, result, result ? "ERROR" : "Good");

}


for (const str of shouldMatch) {

    const result = rex.test(str);

    console.log(str, result, result ? "Good" : "ERROR");

}


查看完整回答
反对 回复 2023-07-20
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信