Hola:
Cita:
Iniciado por buzu
Bien, Gracias por compartir el dato! Por cierto, que no las expresiones regulares son iguales sin importar el lenguaje? Corrijanme si me equivoco.
Pues sí, creo que es universal para todos los lenguajes y aplicaciones que las interpretan (PHP, javascript, perl, grep, editpad, editplus...), pero hay pequeñas diferencias. Por ejemplo la implementación de javascript 1.2 (según leo
aqui) (IE6 creo que la tiene como última versión) no interpreta bien las repeticiones no ambiciosas (existe un término para esto, pero no me sale). Pero 1.5 y siguientes sí (FF3, y creo que 2) El ejemplo sería este:
Código:
Expresión ==> .+\. ==> Cualquier carácter al menos una vez y luego un punto (ambiciosa)
String ==> "Hola que tal. Yo estoy muy bien."
Captura ==> "Hola que tal. Yo estoy muy bien."
Expresión ==> .+?\. ==> Cualquier carácter al menos una vez y luego un punto (no ambiciosa)
String ==> "Hola que tal. Yo estoy muy bien."
Captura ==> "Hola que tal."
Las no ambiciosas capturan lo justo, lo mínimo. Pero las ambiciosas capturan todo lo que pueden (lo máximo).
Tampoco soportan las lookbehind assertion (no encuentro un link decente donde lo mencione). Lo escribí en este post:
http://www.forosdelweb.com/f13/expre...9/#post2197877. Esa expresión que nos trae
stakabrown tiene una aserción predictiva (lookahead, AKA que
y vaya delante de
x en
x(?=y) ).
Yo habría escrito algo simple, como esto:
^-?\d+(\.\d+)?$
Permitiendo números negativos, y opcionalmente decimales:
Código:
(en negrita las que sí pasan la expresión regular)
1
1.223
.123
0.0
0.111
12312.00
-123.23
-456
3as2
Hay pequeñas variaciones sobre cosas avanzadas como las aserciones esas (que poco se usan), pero básicamente la sintaxis es común.
EDITO: He encontrado un link decente que explica qué tiene y qué no tiene cada implementación de las expresiones regulares:
http://www.regular-expressions.info/refflavors.html
Mirad la columna de ECMA. Cosas como las condicionales no son soportadas (y serían muy dificiles de simular supongo, lo intenté y desistí). También da información sobre qué programas o lenguajes pueden entender una expresión regular.