如何配置NSRegularExpression以与ECMA-262兼容

时间:2014-01-15 18:41:31

标签: objective-c regex ecma262

我需要符合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;
}

1 个答案:

答案 0 :(得分:1)

NSRegularExpression的文档和the syntax of ICU regular expression上的文档似乎没有包含使引擎与ECMA-262 RegExp兼容的任何内容。

朝着使用JavaScript引擎的方向评估符合ECMA-262规范的RegExp匹配:

  • 加载UIWebView并使用以下方法:

    - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
    

    这个问题的作者Embed a JavaScript engine in an iOS application

  • 被认为很慢
  • 使用JavaScriptCore框架。检查JSContextRef.h,然后JSBase.h,了解使其正常运行所需的内容。

    来自同一问题的

    This answer也指WWDC 2013演示视频,其中介绍了JavaScriptCore框架。

  • 在同一问题的another answer中也提到过,您可以使用自己的应用构建并发布JavaScript引擎。