2015-05-20 26 views
5

Tôi đến từ bài viết nàyiOS biểu thức chính quy arabic

Regular Expression Arabic characters and numbers only

How to match arabic words with reg exp? (không trả lời câu hỏi của tôi)

Tôi đã thử

^[\p{Arabic} ]+$ 

và nhận

'lỗi Parse', lý do: 'chuỗi thoát không hợp lệ @ pos 3:^[\ ▶ p {} Ả Rập] + $'

Tôi cũng đã thử

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

' phân tích lỗi', lý do: 'không hợp lệ phạm vi ký tự @ pos 7:^[\ u062 ▶ 1- \ u064A \ s] + $'

tôi cũng đã thử

^[\u0621-\u064A]+$ 

'lỗi Parse', lý do: 'không hợp lệ phạm vi ký tự @ pos 7:^[\ u062 ▶ 1- \ u064A] + $'

Tôi cần^[A-Za-z ] + $ chấp nhận ký tự arabic.

Cảm ơn trước!

+0

có thể trùng lặp của [Cách đối sánh các từ tiếng Ả Rập với reg exp?] (Http://stackoverflow.com/questions/15465760/how-to-match-arabic-words-with-reg-exp) – VladL

+0

'\ u0621 'là tổng quát UTF16, với cùng giá trị trong UTF-32. Điều đó có nghĩa là động cơ phải hỗ trợ các điểm mã '> = 0x100'. Có vẻ kỳ lạ là nếu nó chấp nhận cấu trúc utf-16, nó không tự động quảng bá regex thành Unicode. Kiểm tra một lá cờ để làm cho nó regex Unicode. – sln

+0

Cập nhật câu hỏi của bạn bằng mã thực tế cho lỗi của bạn. – rmaddy

Trả lời

3

này giải quyết vấn đề của tôi

văn bản tiếng Ả Rập chỉ:

^[ء-ي] + $

văn bản tiếng Ả Rập và chữ số:

^[ء -ي٠-٩] + $

cho văn bản tiếng Anh và văn bản arabic

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

cho tiếng Anh và tiếng Ả Rập chữ cái và chữ số

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

Sự cố là vì tôi đang sử dụng unicode .. xin lỗi vì điều này.

2

Mục tiêu-C có hai lần thoát cho các dấu gạch chéo trong chuỗi. Bạn cần phải thoát khỏi dấu gạch chéo. Mã này làm việc cho tôi.

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" 

Tiếng Ả Rập được lọc, tiếng Anh không khớp.

+0

Tại thời điểm này nó là một giả định rằng OP đang sử dụng Objective-C. – rmaddy

+0

\ trong \\ p {Arabic} đã giải quyết sự cố. Cảm ơn vì điều đó! Tuy nhiên đối với^[\ u0621- \ u064A] + $, chúng ta thực sự sử dụng điều này như thế nào? – Ted

Các vấn đề liên quan