2013-07-23 19 views

Odpowiedz

24

Konstruktor RegExp pobiera ciąg znaków i tworzy z niego wyrażenie regularne.

function name(str,replaceWhat,replaceTo){ 
    var re = new RegExp(replaceWhat, 'g'); 
    str.replace(re,replaceTo); 
} 

Jeśli replaceWhat może zawierać znaki, które są specjalne w wyrażeniach regularnych można zrobić:

function name(str,replaceWhat,replaceTo){ 
    replaceWhat = replaceWhat.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 
    var re = new RegExp(replaceWhat, 'g'); 
    str.replace(re,replaceTo); 
} 

Zobacz Is there a RegExp.escape function in Javascript?

+1

Nie działa zgodnie z oczekiwaniami, jeśli replaceOs zawiera metaznaki wyrażeń regularnych, np. '*', '+', '[. – pts

+0

@pts Podobnie jest z dosłownym wyrażeniem regularnym. – Barmar

+0

Następnie dodaj tę logikę: [Czy istnieje funkcja RegExp.escape w JavaScript?] (Http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript) – dc5

Powiązane problemy