我需要符合ECMA-262正则表达式,并且NSRegularExpression符合ICU正则表达式。 According to Wikipedia,两者之间存在一些差异。 - 我可以传递任何NSRegularExpression
NSMatchingOptions
或选项以使NSRegularExpression符合ECMA-262(或至少更接近合规)吗?
代码:
NSError * error;
NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern:regexString options:0 error:&error];
if (!error && [regex firstMatchInString:keyString options:0 range:NSMakeRange(0, keyString.length)]) {
return YES;
}
答案 0 :(得分:1)
NSRegularExpression
的文档和the syntax of ICU regular expression上的文档似乎没有包含使引擎与ECMA-262 RegExp兼容的任何内容。
朝着使用JavaScript引擎的方向评估符合ECMA-262规范的RegExp匹配:
加载UIWebView
并使用以下方法:
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
使用JavaScriptCore框架。检查JSContextRef.h
,然后JSBase.h
,了解使其正常运行所需的内容。
This answer也指WWDC 2013演示视频,其中介绍了JavaScriptCore框架。
在同一问题的another answer中也提到过,您可以使用自己的应用构建并发布JavaScript引擎。