2013-12-15 3 views
1

Я пытаюсь получить гораздо более глубокое понимание JS RegExp для проекта, над которым я работаю.Javascript RegExp заменить. Как переносить неизвестные символы на замену?

Так что если я проверяю все строки, содержащие foo, а затем символ, который не является числом, я бы использовал /foo[^0-9]/. Однако, допустим, я хочу изменить все строки, соответствующие этому шаблону, на foobar, а затем на оригинальные персонажи, как бы я это сделал?

str = foozip; 
newStr = str.replace(/foo[^0-9]/, "foobar"); 
console.log(newStr); 
//returns foobarip Note the lack of a z. 

str = foozip; 
newStr = str.replace(/foo/, "foobar"); 
console.log(newStr); 
//this matches foo6zip, which is no good 

Должен ли я запускать отдельную проверку для этого? Есть ли способ переносить неизвестных персонажей с одной стороны замены на другую?

ответ

4

У вас есть два варианта:

  1. Использование LOOKAHEAD:

    str.replace(/foo(?=[^0-9])/, "foobar") 
    
  2. Использование захвата группы:

    str.replace(/foo([^0-9])/, "foobar$1") 
    
Смежные вопросы