Подтвердить что ты не робот

Регулярное выражение для арабского языка

Я хочу написать регулярное выражение, соответствующее каждому слову в предложении:

Мое регулярное выражение: "\b(\w+)\b"

Результат: RegExp matching Arabic image

Пока он хорошо работает с английскими словами. Это не работает при использовании арабских слов. Как я мог совершить тот же подвиг для арабских слов?

4b9b3361

Ответ 1

Попробуйте следующее: -

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

Арабский набор символов списка

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

Арабский script в Юникоде:

Как и в Unicode 6.1, арабский script содержится в следующих блоках:

Arabic (0600—06FF, 225 characters)
Arabic Supplement (0750—077F, 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 (10E60—10E7F, 31 characters)
Arabic Mathematical Alphabetic Symbols (1EE00—1EEFF, 143 characters)

Содержание взято из wikipedia - Арабский script в Юникоде

Ответ 2

Я бы предложил следующее:

\p{InArabic}

Ответ 3

Вы можете сделать это с помощью функции для перевода списка Aracbic Characters, ее очень просто сделать.

Как будто:

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;
}