用于检测javascript调用函数的regEx表达式

时间:2017-08-14 15:53:07

标签: ios objective-c regex

例如,有@"javascript:viewData(3713, 'A', 89360)"字符串。

我想从字符串中提取3713,A和89360。

对于Java,“viewData\(([^\(]*),[\s\S]\'([^\(]*)\',[\s\S]([^\(]*)\)”可以成功提取这些字符串。

但是,我无法在iOS Objective-C中成功提取它们。

我的代码如下:

NSString *searchedString = @"javascript:viewData(3713, 'A', 89360)";
NSRange   searchedRange = NSMakeRange(0, [searchedString length]);
NSString *pattern = @"<HERE THE PATTERN NEEDED>";
NSError  *error = nil;
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSTextCheckingResult *match = [regex firstMatchInString:searchedString options:0 range:searchedRange];

然后匹配的字符串可以是:

[searchedString substringWithRange:[match rangeAtIndex:1]] ..等等。

如何设置模式?

1 个答案:

答案 0 :(得分:1)

基本上,正则表达式模式也适用于Objective-C。

但是你必须逃避所有的反斜杠:

NSString *pattern = @"viewData\\(([^\\(]*),[\\s\\S]\\'([^\\(]*)\\',[\\s\\S]([^\\(]*)\\)";