2011-08-09 12 views
10

Jak używać dopasowanych zmiennych we wzorcu w ciągu zastępczym?JavaScript String Replace - Jak używać dopasowanych zmiennych w ciągu zastępującym?

var regexp = new RegExp('needle', 'ig'); 
str.replace(regexp, '<span class="marked">//1</span>') 
+1

myślę trzeba mieć odczytu tego http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html –

+4

@Peter Kelly: Nie jestem pewien, czy to jest poprawne - jego przykład nie odwołuje się do * parsowania * HTML, ale zamiast tego zajmuje się dodawaniem znaczników HTML wokół napisu. Które jest całkowicie poprawne zastosowanie dla Regex. – OverZealous

+0

Skąd wiesz, że możesz użyć '// 1'? Dokładniej przeczytaj dokumentację na temat zamiany ciągu znaków, zwłaszcza część dotyczącą specjalnych zmiennych '$'. –

Odpowiedz

19

spróbować

var regexp = new RegExp(something, 'ig'); 
str.replace(regexp, '<span class="marked">$&</span>') 

Referencje:

+1

działa .. ale dlaczego $ &? co, jeśli masz jakieś grupy we wzorze .. 1 $ itd. nie wydaje się działać – clarkk

+0

Interesujące. Właściwie nie wiedziałem o zamiennikach '$ i', '$ '' i $ '. – OverZealous

+2

@claekk: $ & reprezentuje dopasowany ciąg, $ n oznacza pasującą n-tą grupę. Jeśli nie korzystasz z dopasowywania grupowego, powinieneś być lepszy ($ 1 również powinno działać). Zobacz odwołanie, które dodałem – Eineki

6

Prawidłowe sposobem użycia odwołania wstecznego w JavaScript jest poprzez $1 ... $9.

Aby dokonać przykładową pracę:

var regexp = new RegExp(something, 'ig'); 
var result = str.replace(regexp, '<span class="marked">$1</span>'); 

Więcej informacji dostępnych jest tutaj: http://www.regular-expressions.info/javascript.html#replace

+0

to tylko zastępuje vary 1 $ itd. – clarkk

+1

Aby użyć liczbowych odnośników, będziesz musiał zawrzeć swoje wyrażenie regularne w nawiasach: '/ (needle) /'. W przeciwnym razie użyj '$ & ', które pokazuje Eineki. – OverZealous

+0

ohh ... oczywiście! :) – clarkk

Powiązane problemy