Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/05/2011, 10:09
omarMusic
 
Fecha de Ingreso: febrero-2011
Ubicación: Evolandia
Mensajes: 103
Antigüedad: 13 años, 10 meses
Puntos: 10
Respuesta: Modificadores de Patrón - Expresiones regulares

Holas, gracias por el interes en el tema IsaBelM, bueno buscando por la web encontré está definición de /D en http://php.net/manual/es/regexp.reference.anchors.php, acá un ejemplo de su uso:

Supongamos q tenemos el siguiente código:

Cita:
var valor = "abc123";
alert(/[a-z]\d{3}$/.test(valor));
en éste código se tiene una expresión regular sencilla /[a-z]\d{3}$/, q nos indica q una cadena puede tener de 0 a n caracteres al principio y q termine si o si con 3 dígitos al final, bueno en el código anterior nos devuelve true ya q se cumple la condición, bueno hasta ahí todo bien, pero q pasa si se me ocurre colocar un salto de línea en la cadena, algo así

Cita:
var valor = "abc\n123";
alert(/[a-z]\d{3}$/.test(valor));
En éste caso nos devolverá un false ya q el comportamiento por defecto de $ es q en cada salto de ĺinea y en el final de la cadena se evaluará la expresión regular, es decir:

Cita:
Si la cadena es "abc\n123"
Se evalúa /[a-z]\d{3}$/ en "abc", retorna false porque no cumple la condición
Se evalúa /[a-z]\d{3}$/ en "123", retorna false porque no cumple la condición
bueno para evitar este comportamiento es donde entra /D PCRE_DOLLAR_ENDONLY q fuerza a q se ignoren los saltos de línea y q sólo se evalúe el final de la cadena, así la cadena "abc\n123" con la expresion regular /[a-z]\d{3}$/D nos devolvería true (claro, si esto fuese en PHP funcionaria), bueno un equivalente en js sería q antes de mandar a evaluar la cadena con la expresión regular tendríamos q eliminar todos los saltos de línea q existiesen en la cadena, algo así:

Cita:
var valor = "abc123";
valor = valor.replace(/\n/gi, ''); //Lei por ahi q ésto no es compatible con ie7
alert(/[a-z]\d{3}$/.test(valor));
Bueno espero q esto le sea util a alguién, ya q esto se lo utilizar en validaciones de tarjetas de crédito.

Saludos !