Как настроить 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;
}

person Sam    schedule 15.01.2014    source источник
comment
Насколько я вижу в документации, такой опции нет. И, кстати, регулярное выражение ICU ближе к вкусу Java, чем вариант ECMA-262.   -  person nhahtdh    schedule 15.01.2014
comment
спасибо нхатдх. Мне нужно максимально приблизиться к вкусу ECMA. Одно большое отличие, которое я замечаю, заключалось в том, что ICU является возможностью просмотра назад. Интересно, могу ли я хотя бы отключить это...   -  person Sam    schedule 15.01.2014
comment
Нашел этот stackoverflow. com/questions/5317776/ и это: developer.apple.com/library/mac/documentation/Carbon/Reference/   -  person nhahtdh    schedule 15.01.2014


Ответы (1)


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

Переходим к использованию движка JavaScript для оценки соответствия RegExp спецификациям ECMA-262:

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

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

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

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

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

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

person nhahtdh    schedule 15.01.2014