Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Sancho.Mazorka en 21 Febrero 2011, 10:06 am



Título: [Sulucionado] string.match no funciona
Publicado por: Sancho.Mazorka en 21 Febrero 2011, 10:06 am
Hola, qué tal?

Mi problema es el siguiente. Tengo una aplicación en php que descompone unas estadisticas con expresiones regulares.

Código
  1. preg_match_all('#([0-9]{1,5}) ([0-9]{1,5}) (.*)#', $string, $hits);

$string contiene estos datos: 1100 51 "|-WDFH-| ^9Gonz"

En php funciona perfecto y el resultado es este.

Código:
$hits[3][0] = 1100
$hits[2][0] = 51
$hits[1][0] = "|-WDFH-| ^9Gonz"

Al pasarlo a javascript me quedó así:

Código
  1. var txt = '1100 51 "|-WDFH-| ^9Gonz"';
  2. var matches = txt.match('#([0-9]{1,5}) ([0-9]{1,5}) (.*)#');
  3. for (i in matches){
  4.    alert(i + ' : ' + matches[i]);
  5. }

Pero cuando uso la consola de Google Chrome,  me indica que matches = null.

Alguna solución?

Saludos, Sancho.Mazorka!    :¬¬


Título: Re: [Problema] string.match no funciona
Publicado por: Nakp en 22 Febrero 2011, 05:44 am
necesitas crear una pattern las regexp van entre /regexp/

http://www.javascriptkit.com/javatutors/redev2.shtml
http://www.javascriptkit.com/javatutors/redev3.shtml


Título: Re: [Problema] string.match no funciona
Publicado por: Sancho.Mazorka en 22 Febrero 2011, 22:01 pm
Cambié el pattern
Código
  1. var matches = txt.match('#([0-9]{1,5}) ([0-9]{1,5}) (.*)#');

por éste otro y funciono de 10, cuando le coloqué las "/ /" no funciono
Código
  1. var matches = txt.match('([0-9]{1,5}) ([0-9]{1,5}) (.*)');

Lo unico que hice fue remover los #.

Gracias!


Saludos, Sancho.Mazorka!    :¬¬


Título: Re: [Sulucionado] string.match no funciona
Publicado por: Shell Root en 23 Febrero 2011, 04:03 am
Muestra donde pusisteis los slash's


Título: Re: [Sulucionado] string.match no funciona
Publicado por: Sancho.Mazorka en 23 Febrero 2011, 04:05 am
No hizo falta :S

Código
  1. var matches = txt.match('([0-9]{1,5}) ([0-9]{1,5}) (.*)');
  2. var matches = txt.match(/([0-9]{1,5}) ([0-9]{1,5}) (.*)/);

Funciona bien, cualquiera de las 2.


Saludos, Sancho.Mazorka!    :¬¬


Título: Re: [Sulucionado] string.match no funciona
Publicado por: Shell Root en 23 Febrero 2011, 04:08 am
No se, pero creo que es así...
Código
  1. var matches = txt.match('/([0-9]{1,5})([0-9]{1,5})(.*)/i');


Título: Re: [Sulucionado] string.match no funciona
Publicado por: Sancho.Mazorka en 23 Febrero 2011, 04:12 am
Ya probe, ya lo solucione y por eso le cambie el nombre al thread. Funciona de ambas maneras...por lo menos en javascript, y por qué agregaste una i al final del pattern.


Saludos, Sancho.Mazorka!     :¬¬


Título: Re: [Sulucionado] string.match no funciona
Publicado por: Shell Root en 23 Febrero 2011, 04:20 am
i   Insensitivo – no distingue mayúsculas de minúsculas
m   Multilinea - ^ y $ indican el inicio y fin de cada linea
s   Todo - el . (punto) captura todo, incluyendo nueva linea
x   Extendido – comentarios & espacios
e   Evaluar (preg_replace) – interpreta el reemplazo como código PHP
S   Análisis extra del patron
U   El patron es insatisfactorio
u   El patron es tratado como UTF-8