Foros del Web » Programando para Internet » Javascript »

Expresiones regulares

Estas en el tema de Expresiones regulares en el foro de Javascript en Foros del Web. Que tal gentes... necesito hacerles la siguiente consulta. Como sabrán una expresión regular se puede crear como un literal o mediante el objeto RegExp. Pues ...
  #1 (permalink)  
Antiguo 03/09/2007, 20:39
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Expresiones regulares

Que tal gentes... necesito hacerles la siguiente consulta. Como sabrán una expresión regular se puede crear como un literal o mediante el objeto RegExp. Pues bien resulta que hago la prueba con un mismo patrón creado de las dos formas: el literal me devuelve TRUE (o sea, funciona), pero con el objeto RegExp me devuelve FALSE (o sea, no funciona):

Código:
// Funciona
pattern = /(^|\s)palabra(\s|$)/;

// No funciona
pattern2 = new RegExp("(^|\s)palabra(\s|$)");
Ambas las prueba mediante el método test() sobre la misma cadena. ¿Será que hay algo malo en la segunda (pattern2)?
__________________
El conocimiento es libre: Movimiento por la Devolución
  #2 (permalink)  
Antiguo 04/09/2007, 09:52
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Expresiones regulares

Hola

Quizás así:
Código PHP:
<script type="text/javascript">
// Funciona
var = /(^|s)palabra(s|$)/;

// No funciona
var p2 = new RegExp("(^|\\s)palabra(\\s|$)");

var 
palabra "palabra ";
var 
t1 p.test(palabra);
var 
t2 p2.test(palabra);
document.write(t1+", "+t2);

</script> 
Recuerda que lo que le pasas a RegExp() es un string, y que si hacemos un alert() de "hola que \stal" nos dirá: ""hola que stal", es decir, nos pasará por alto la contrabarra porque ésta significa que estamos escapando la s. Para escapar la contrabarra, necesitamos escapar la contrabarra (con otra contrabarra):
alert("hola que \\stal"); ==> "hola que \stal"


Con un alert(pattern2) habrías visto el fallo enseguida.

En esta página -un poquito rarita, todo hay que decirlo- hay un apartado llamado TURNING IMPLICIT INTO EXPLICIT que comenta más ampliamente eso del escapado.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 04/09/2007, 14:52
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Re: Expresiones regulares

¡Tienes toda la razón!... hace tiempo no veía expresiones regulares, por eso no s eme pasó por la mente :D Gracias (Y)
__________________
El conocimiento es libre: Movimiento por la Devolución
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:15.