1 回答
TA贡献1765条经验 获得超5个赞
如果我没看错的话,规则是:
必须至少有一个阿拉伯文字字符
必须仅包含阿拉伯文字、空格和
,.()-
如果是这样,您想要:
对字符串中某个位置的阿拉伯字符进行正向预测,并结合
^
和$
锚点要求它们之间的所有内容都是阿拉伯语或.,()-
或空格
如果是这样,您可以使用 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");
}
添加回答
举报