2014-09-14 7 views
5

dimenticato di rimuovere il modificatore ho in un modello, che dovrebbe togliere i caratteri non alfanumerici:Perché [ W _] + con il modificatore i in regex Javascript corrisponde a i, k, s?

str.replace(/[\W_]+/gi," "); 

e si chiese, che [\W_] corrisponderà i, k e con + quantificatore anche s: D

Senza il modificatore i sta funzionando bene. E, naturalmente, il modificatore che è un errore, ma non capisco questo comportamento strano: regex101 e here is a fiddle

sto usando Firefox 32.0.1

enter image description here enter image description here

+2

Impossibile riprodurre (FF 35, IE 8, Chromium 39) – Oriol

+1

Né (Safari 6.x) –

+0

Come soluzione, sembra che dividere la regex in due faccia la cosa giusta: 'str.replace (/ [\ W]/gi, "") .replace (/ [\ _]/gi, "") ' – hugomg

risposta

5

E 'un bug che influisce su Firefox 32.0 e 32.0.1.

È già stato risolto su Firefox 33 Beta.

+1

Sospetto anche che potrebbe essere un bug. Ottengo lo stesso comportamento di OP utilizzando FF 32 ma funziona bene in Chrome 37 – hugomg