猿问

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

我有以下正则表达式来匹配阿拉伯字母。我还想接受以下字符,.()-和空格字符,但是现在它使用布尔值或在组之间,阿拉伯字母应该是强制符,因此它不会接受例如仅空格或上面列出的任何字符。

不应匹配没有阿拉伯字母的字符

  • ,()-

应该匹配

  • .()-,سشييتنسشاي

  • سشييتنسشاي.(ي)-,

^([\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufbc1]|[\ufbd3-\ufd3f]|[\ufd50-\ufd8f]|[\ufd92-\ufdc7]|[\ufe70-\ufefc]|[\ufdf0-\ufdfd])*$

慕桂英3389331
浏览 116回答 1
1回答

POPMUISE

如果我没看错的话,规则是:必须至少有一个阿拉伯文字字符必须仅包含阿拉伯文字、空格和,.()-如果是这样,您想要:对字符串中某个位置的阿拉伯字符进行正向预测,并结合^和$锚点要求它们之间的所有内容都是阿拉伯语或.,()-或空格如果是这样,您可以使用 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");}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答