Как настроить NSRegularExpression для совместимости с ECMA-262

Мне нужно быть совместимым с регулярным выражением ECMA-262, а NSRegularExpression - совместимым с регулярным выражением ICU. Согласно Википедии, между ними есть небольшая разница. - есть ли NSRegularExpressionNSMatchingOptions или варианты, которые я могу передать, чтобы сделать 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 ответ

Решение

Документация NSRegularExpressionи документация по синтаксису регулярного выражения ICU, кажется, не содержит ничего, что делает движок совместимым с ECMA-262 RegExp.

В направлении использования механизма JavaScript для оценки соответствия RegExp, соответствующего спецификациям ECMA-262:

  • Загрузить UIWebView и использовать метод:

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

    Автор этого вопроса говорит, что он медленный. Встроить движок JavaScript в iOS-приложение.

  • Используйте JavaScriptCore Framework. Проверьте JSContextRef.h, затем JSBase.h чтобы выяснить, что вам нужно, чтобы это заработало.

    Этот ответ на тот же вопрос также относится к видеороликам о презентации WWDC 2013, в которой представлена ​​структура JavaScriptCore.

  • Также упомянуто в другом ответе на тот же вопрос, вы можете создать и поставить движок JavaScript с вашим приложением.

Другие вопросы по тегам