У меня есть RegExp, производящий замену строки глобальным набором. Мне нужна только одна замена, но я использую global, потому что есть второй набор сопоставлений шаблонов (математическое уравнение, которое определяет приемлемые индексы для начала замены), которые я не могу легко выразить как часть регулярного выражения.Выключить замену глобального цикла
var myString = //function-created string
myString = myString.replace(myRegex, function(){
if (/* this index is okay */){
//!! want to STOP searching now !!//
return //my return string
} else {
return arguments[0];
//return the string we matched (no change)
//continue on to the next match
}
}, "g");
Если возможно, как я могу выйти из строкового глобального поиска?
Благодаря
Возможное решение
раствор (который не работает в моем сценарии по соображениям производительности, так как у меня есть очень большие строки с тысячами возможных совпадений с очень сложным РегВыр работает сотни или в тысячах раз):
var matched = false;
var myString = //function-created string
myString = myString.replace(myRegex, function(){
if (!matched && /* this index is okay */){
matched = true;
//!! want to STOP searching now !!//
return //my return string
} else {
return arguments[0];
//return the string we matched (no change)
//continue on to the next match
}
}, "g");
i'am как-то недостающий ваше регулярное выражение и простой ввод и ожидаемая выходной выборку – rene
Вы можете просто 'match' их первыми, и просто перебирать их? – Wrikken
@Wrikken Технически это может сработать, но это удар производительности. Я добавил возможное решение, которое просто соответствует всем независимо (похоже на то, что вы говорите), однако производительность в моем сценарии довольно суровая. –