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