2010-06-23 27 views
8
_

La siguiente declaración en JavaScript funciona como se esperaba:Cómo reemplazar todos los caracteres en una cadena usando JavaScript para este caso específico: reemplazar. por

var s1 = s2.replace(/ /gi, '_'); //replace all spaces by the character _ 

Sin embargo, para reemplazar todas las apariciones del carácter. por el carácter _, que tengo:

var s1 = s2.replace(/./gi, '_'); 

pero el resultado es una cadena totalmente lleno con el carácter _

¿Por qué y cómo sustituir. por _ usando JavaScript?

Respuesta

25

El. el personaje en una expresión regular coincidirá con todo. Es necesario para escapar de ella, ya que desea un período literal de caracteres:

var s1 = s2.replace(/\./gi, '_'); 
6

tiene que escapar del punto, ya que es un carácter especial en expresiones regulares

s2.replace(/\./g, '_'); 

Nota que salpican no requiere escapar en las clases de caracteres, por lo tanto, si desea reemplazar los puntos y espacios con guiones de una sola vez, usted podría hacer:

s2.replace(/[. ]/g, '_'); 

Usando i bandera aquí es irrelevante, ya que w ell como en tu primera expresión regular.

4

También puede usar cadenas en lugar de expresiones regulares.

var s1 = s2.replace ('.', '_', 'gi') 
+0

+1 Buen punto - es un exceso de expresiones regulares aquí. (cue la cita J.Z. en 3 ... 2 ... 1 ...) – Piskvor

+1

El 3er parámetro no es estándar. No todos los navegadores lo soportarán. Consulte este https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/replace – HoLyVieR

1

También es lo que funciona bien también:

var s1 = s2.split(".").join("_"); // Replace . by _ // 
+0

que es un enfoque muy extraño – SilentGhost

+0

, es el único que no requiere RegExp en absoluto. – HoLyVieR

+0

Este es un enfoque diferente, es mejor que reemplazar que reemplaza la primera vez que aparece – Abhi

Cuestiones relacionadas