2013-07-23 2 views
0

Как я могу создать Regex, который заменяет все вхождения слова, но первым?
У меня есть веб-страница с множеством текста и заголовком в верхней части. Я хочу создать регулярное выражение, которое заменяет все вхождения слова, но первое, потому что я не хочу, чтобы заголовок изменялся.JS Regex: Заменить все, кроме первого

ответ

4
var count = 0; 
text = text.replace(myRegex, function(match) { 
    count++; 
    if(count==1) { 
     return match; 
    } 
    else { 
     return myReplacedValue; 
    } 
}); 
2

Вы можете сделать это:

var i = 0; 
"foo foo foo".replace(/foo/g, function(captured/*, offset, originalString */) { 
    if (i++) { 
     return 'bar'; 
    } 
    return captured; 
}); 
+0

Что делает 'if (i ++)' do? – usama8800

+0

он увеличивает каждый цикл. поэтому в первый раз это 0, что является ложным. Таким образом, он пропускает первый матч, но потом будет правдивым. – kalley

1

большого ответ аннотация ... я никогда не видел заменить используемые как, что до

Heres хорошей суматохи версия ..

text = text.replace(/boo/g, function(match) {return (++count==1)?match:myReplacedValue}); 
+0

Спасибо. Заменить функцию имеет '(regex, callback)' стиль для аргументов, просто немного поищите его. :) –

Смежные вопросы