2011-07-11 11 views
6

Sto lavorando con jQuery e sto provando a scrivere un pattern replace, ma non funziona. Ho questo:javascript regexp replace non funziona, ma la stringa sostituisce works

var $featured_rewrite = $('#featured').not('.slideshow'); 
$featured_rewrite.children().attr('href', $featured_rewrite.find('img').attr('src').replace('/-[0-9]+x[0-9]+\./i', '.')); 

non capisco il motivo per cui una cosa del genere funziona:

.replace('-500x277.', '.') 

ma non questo, che ho anche controllato con uno strumento e fatto in modo che fosse valido e funziona:

.replace('/-[0-9]+x[0-9]+\./i', '.') 

risposta

35

'/-[0-9]+x[0-9]+\./i' è una stringa.

/-[0-9]+x[0-9]+\./i è regex.

"hi".match('/hi/') // returns null 
"hi".match(/hi/) // returns ["hi"] 

Edit: Inoltre, tanto per essere chiari, non c'è niente di sbagliato con il tuo regex diverso le virgolette. Potresti considerare di utilizzare /g (ad esempio, /gi alla fine) se devi sostituire più di una corrispondenza, ma il gioco è fatto.

+0

+1 bryan, bella cattura – kobe

+1

Questo mi ha aiutato, grazie. – RTF

+0

Uhh, ore sprecate in prove e manuali rileggenti, non ho mai notato l'assenza di '' finché non sono venuto qui. – Sandman4

Problemi correlati