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
!