【问题标题】:How to configure NSRegularExpression to be compatible with ECMA-262如何配置 NSRegularExpression 与 ECMA-262 兼容
【发布时间】:2014-02-04 09:47:28
【问题描述】:

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

【问题讨论】:

标签: objective-c regex ecma262


【解决方案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 引擎。

【讨论】:

    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多