Foros del Web » Programando para Internet » Javascript »

Modificadores de Patrón - Expresiones regulares

Estas en el tema de Modificadores de Patrón - Expresiones regulares en el foro de Javascript en Foros del Web. Hola a todos, tengo entendido que para expresiones regulares en javascript solo existen modificadores de patron g, i, m, s, x, el problema es q ...
  #1 (permalink)  
Antiguo 29/04/2011, 11:10
 
Fecha de Ingreso: febrero-2011
Ubicación: Evolandia
Mensajes: 103
Antigüedad: 13 años, 10 meses
Puntos: 10
Modificadores de Patrón - Expresiones regulares

Hola a todos, tengo entendido que para expresiones regulares en javascript solo existen modificadores de patron g, i, m, s, x, el problema es q necesito hacer una conversion de una expresion regular en php donde utilizan el modificador D (PCRE_DOLLAR_ENDONLY) el cual no existe en js, ahora mi pregunta es: ¿existe algún equivalente en js?

Espero q alguíen me pueda colaborar en mi duda, muchas gracias de antemano.

Saludos !
  #2 (permalink)  
Antiguo 29/04/2011, 13:34
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Modificadores de Patrón - Expresiones regulares

buenas,
en javascript los unicos modificadores disponibles son: g, m, i. si explicaras que hace el modificador D (porque estoy teniendo un poco de dificultad en su uso) pudiera ser que se pueda hacer un equivalente en javascript.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 29/04/2011, 14:12
 
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

Gracias por el interés, el problema es q me dieron la expresión regular con ese modificador dentro de una función(PHP) q se encarga de validar datos de tarjetas de crédito, y simplemente me dijieron queremos q ahora esa función este en js sin ninguna explicación alguna, bueno solo tengo la referencia de http://php.net/manual/en/reference.pcre.pattern.modifiers.php q no ayuda mucho por cierto, pero pediré una explicación de q hace ese modificador o como lo implementaron, luego te comentaré para ver como podriamos solucionarlo.

Saludos!
  #4 (permalink)  
Antiguo 29/04/2011, 15:04
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: Modificadores de Patrón - Expresiones regulares

por lo que he entendido se refiere al carácter ($) que coincide con el final de la cadena sobre la que se está buscando. por ejemplo
Cita:
/\d+$/
coincide con
Cita:
1232
sfsdf33123
pero no incide con
Cita:
adasa1124fsdfds

Última edición por IsaBelM; 29/04/2011 a las 15:15
  #5 (permalink)  
Antiguo 03/05/2011, 10:09
 
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 !
  #6 (permalink)  
Antiguo 03/05/2011, 10:58
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: Modificadores de Patrón - Expresiones regulares

en el caso que planteas este patrón devolvería true
Cita:
/[a-z]\s\d{3}$/
\s equivale a los espacios y también a \r y \t
  #7 (permalink)  
Antiguo 03/05/2011, 13:26
 
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

Bueno si tienes razón IsaBelM creo q es un ejemplo muy trivial el q puse y es válida la solución q planteas, pero por ej para la validación de digamos un numero de tarjeta MasterCard estoy usando la siguiente expresion regular /^5\d{3}[ \-]?\d{4}[ \-]?\d{4}[ \-]?\d{4}$/D bueno aqui si es un poco dificil utilizar el patrón de atajo \s ya q los saltos de linea pueden estar en cualquier posición de la cadena, bueno quisiera cambiar la expresión regular por una mas sencilla pero no me autorizaron para ello, todo un lio, de todas formas gracias por la observación.

Saludos!

Etiquetas: expresiones, regulares
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 21:57.