2015-05-20 4 views
5

Я из этого сообщенийIOS регулярного выражения арабского

Regular Expression Arabic characters and numbers only

How to match arabic words with reg exp? (не ответили на мой вопрос)

Я попытался

^[\p{Arabic} ]+$ 

и получил

'Ошибка синтаксического анализа', причина: 'Invalid последовательность выхода @ поз 3:^[\ ▶ р {Arabic}] + $'

Я также попытался

^[\u0621-\u064A\s]+$ 

' ошибка синтаксического анализа», причина: 'Недопустимый диапазон символов @ поз 7:^[\ u062 ▶ 1- \ u064A \ s] + $'

Я также попытался

^[\u0621-\u064A]+$ 

'Анализировать ошибка', причина: 'Недопустимый диапазон символов @ поз 7:^[\ u062 ▶ 1- \ u064A] + $'

мне нужно^[A-Za-Z ] + $, который принимает арабские символы.

Заранее благодарен!

+0

Возможный дубликат [Как совместить арабские слова с рег exp?] (Http://stackoverflow.com/questions/15465760/how-to-match-arabic-words-with-reg-exp) – VladL

+0

'\ u0621 'является общим UTF16, с тем же значением в UTF-32. Это означает, что двигатель должен поддерживать кодовые точки '> = 0x100'. Кажется странным, что если он принимает конструкцию utf-16, он не аудитивно продвигает регулярное выражение в Unicode. Проверьте флаг, чтобы сделать его регулярным выражением Unicode. – sln

+0

Обновите свой вопрос, используя код, указывающий причину. – rmaddy

ответ

3

Это решило мою проблему

арабский текст только:

^[ء-ي] + $

арабский текст и цифры:

^[ء -I0-9] + $

для английского текста и арабский текст

^[A-Za-Z ء-ي] + $

для английского и арабского текста и цифр

^[A-Za -z0-9 ء-ي0-9] + $

Ошибка, потому что я использую unicode .. извините за это.

2

Objective-C выполняет двойные escape-последовательности для слэшей в строках. Вам нужно избегать косой черты. Этот код работал для меня.

NSString *string = @"تجريب 123 "; 
NSString *stringTwo = @"123 test"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[\\p{Arabic}\\s\\p{N}]+$" options:NSRegularExpressionCaseInsensitive error:nil]; 

string = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""]; 

stringTwo = [regex stringByReplacingMatchesInString:stringTwo options:0 range:NSMakeRange(0, [stringTwo length]) withTemplate:@""]; 

NSLog(@"\nFirst String: %@", string); //"First String: " 
NSLog(@"\nSecond String: %@", stringTwo); //"Second String: 123 test" 

Арабский отфильтрован, английский не соответствует.

+0

На этом этапе предполагается, что OP использует Objective-C. – rmaddy

+0

\ in \\ p {Арабский} решил сбой. Спасибо за это! Однако для^[\ u0621- \ u064A] + $, как мы на самом деле используем это? – Ted