Насколько я знаю, я нашел интересную проблему, на которую здесь нет ответа. У меня есть объект регулярного выражения, который я использую для замены внутри строки. Проблема в том, что если я хочу остановить дальнейшие замены, потому что я нашел определенную строку, я не могу этого сделать. Оператор «break», очевидно, не работает, потому что это не цикл и не случай переключения.
Если я использую «возврат», замены продолжатся. Я могу использовать «незавершенную» переменную (см. пример ниже) в начале функции, чтобы предотвратить дальнейшие замены, но проверки будут продолжаться, она будет оцениваться столько раз, сколько соответствует регулярному выражению, что не требуется.
Есть ли способ полностью остановить замену этой функции?
Спасибо.
Пример:
var regex = new RegExp("whatever", "g");
str = str.replace(regex, function(tot, group1) {
if (group1 == "i_wanna_stop_str") {
incomplete = true;
break; <-- not working
} else {
... compute replacement ...
return replacement;
}
}