阿拉伯语的正则表达式

27

我想编写一个可以匹配句子中每个单词的正则表达式:

我的正则表达式是:“\b(\w+)\b

结果: RegExp matching Arabic image

虽然它可以很好地匹配英语单词,但是对于使用阿拉伯语的单词则不起作用。 我该如何为阿拉伯语单词完成相同的任务?

3个回答

47

尝试这个:

function HasArabicCharacters(text)
{
    var arregex = /[\u0600-\u06FF]/;
    alert(arregex.test(text));
} 

列表的阿拉伯字符集

[\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufc3f]|[\ufe70-\ufefc]

Unicode 中的阿拉伯文脚本:

截至Unicode 6.1版本,阿拉伯文脚本包含在以下块中:

Arabic (060006FF, 225 characters)
Arabic Supplement (0750077F, 48 characters)
Arabic Extended-A (08A0—08FF, 39 characters)
Arabic Presentation Forms-A (FB50—FDFF, 608 characters)
Arabic Presentation Forms-B (FE70—FEFF, 140 characters)
Rumi Numeral Symbols (10E6010E7F, 31 characters)
Arabic Mathematical Alphabetic Symbols (1EE00—1EEFF, 143 characters)

这些内容来自于wikipedia - 阿拉伯字母Unicode块


2
一个更新的正则表达式,完全支持最新的Unicode标准: [\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufbc1]|[\ufbd3-\ufd3f]|[\ufd50-\ufd8f]|[\ufd92-\ufdc7]|[\ufe70-\ufefc]|[\uFDF0-\uFDFD]。在Rubular上测试它。 - Razi Shaban

5
我建议这样做:
\p{InArabic}

我已经测试过了,它是正确的。据我所知,这是正则表达式中的标准语法。例如,您可以在此处查看更多详细信息:https://www.regular-expressions.info/unicode.html。 - vahidreza

0

你可以使用函数来翻译阿拉伯字符列表,非常简单。

就像这样:

function (regexStr) {
   regexStr = replace(regexStr,"ۿ","\u0600");
   regexStr = replace(regexStr,"؀","\u06FF");

   return regexStr;
}

或者换句话说,将[alf]和[ya]替换为正确显示文本方向的方式

var regexStr = "/[[alf]-[ya]]/";

 function (regexStr) {
   regexStr = replace(regexStr,"[alf]","\u0600");
   regexStr = replace(regexStr,"[ya]","\u06FF");

   return regexStr;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接