我有一個RegExp,做一個字符串替換,全局設置。我只需要一個替換,但我使用全局,因爲有第二組模式匹配(一個數學方程,確定可接受的替換開始索引),我不能很容易地表示爲正則表達式的一部分。突破替換全局循環
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");
我'莫名其妙失蹤的正則表達式和簡單的輸入和預期的輸出樣本 – rene
可你只是'第一match'他們,只是循環通過這些? – Wrikken
@Wrikken從技術上講,這可能有效,但這是一個性能問題。我添加了一個可能的解決方案,只是匹配所有內容(類似於您所說的內容),但是在我的方案中,性能受到的影響非常嚴酷。 –