iOS正则表达式阿拉伯语

时间:2015-05-20 16:33:27

标签: ios regex localization arabic nsregularexpression

我来自这些帖子

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] + $。

提前致谢!

2 个答案:

答案 0 :(得分:3)

这解决了我的问题

仅包含空格的阿拉伯文字:

  

^ [ء-ءء-ي] + $

仅限阿拉伯文:

  

^ [ء-ي] + $

阿拉伯文字和数字:

  

^ [ء-ي0-9] + $

用于英文文本和阿拉伯语文本

  

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

用于英语和阿拉伯语文本和数字

  

^ [A-ZA-Z0-9ء-ي0-9] + $

崩溃是因为我正在使用unicode ..对不起。

答案 1 :(得分: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"

阿拉伯语被过滤,英语不匹配。