2015-05-20 63 views
5

我來自這個帖子iOS的正則表達式阿拉伯語

Regular Expression Arabic characters and numbers only

How to match arabic words with reg exp?(沒有回答我的問題)

我已經試過

^[\p{Arabic} ]+$ 

並獲得

'解析錯誤',原因是: '無效的轉義序列@ POS 3:^ [\ ▶P {}阿拉伯文] + $'

我也試過

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

「解析錯誤」,原因是: '無效字符範圍@ POS 7:^ [\ U062 ▶1 \ u064A \ S] + $'

我也試過

^[\u0621-\u064A]+$ 

'解析錯誤',原因: '無效字符範圍@ POS 7:^ [\ U062 ▶1- \ u064A] + $'

我需要^ [A-ZA-Z ] + $接受阿拉伯字符。

在此先感謝!

+0

可能重複[如何用reg 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

這解決了我的問題

只有

阿拉伯文字:

^[ء-ي] + $

阿拉伯文字和數字:

^[ء -o0-9] + $

英語文字和阿拉伯文字

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

爲英文和阿拉伯文文本和數字

^[A-ZA -z0-9c0-9] + $

崩潰是因爲我使用unicode ..對不起。

2

Objective-C對字符串中的斜槓進行雙重轉義。你需要逃避斜線本身。此代碼爲我工作。

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

\在\\ p {阿拉伯語}解決了崩潰。感謝那!但是對於^ [\ u0621- \ u064A] + $,我們該如何使用它? – Ted