Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Duda con expresión regular

Estas en el tema de Duda con expresión regular en el foro de Javascript en Foros del Web. Buenas gente, Tengo la siguiente expresión regular: Código: var re = /^[A-Z0-9]{1,30}(,[A-Z0-9]{1,30})*$/; Esto es para un input text de maxlength 30. Donde se puede meter ...
  #1 (permalink)  
Antiguo 08/10/2014, 07:51
Avatar de crcbad  
Fecha de Ingreso: enero-2005
Mensajes: 302
Antigüedad: 19 años, 3 meses
Puntos: 0
Duda con expresión regular

Buenas gente,

Tengo la siguiente expresión regular:

Código:
var re = /^[A-Z0-9]{1,30}(,[A-Z0-9]{1,30})*$/;
Esto es para un input text de maxlength 30. Donde se puede meter texto alfanumérico sin símbolos especiales, o varios separados con coma, también sin símbolos especiales.

El problema es que a esos textos alfanuméricos me comentan que les quieren tener la posibilidad de meter una coma. Por lo que había pensado que cada texto alfanumérico estuviera encerrado en comillas.

Antes:

1f13er3,12412412ssss,12ssss2

Ahora:

"1f1,3er3","12,4124,12ssss","12ss,ss2"

Como habría que modificar la expresión regular para adaptarlo a este cambio?

Gracias de antemano!
__________________

:cool: [ http://eruben.sytes.net ] :cool:


Las dos frases que te ayudarán a salir adelante:
  • No hay mujer fea, solo copas de menos. :borracho:
  • Ante la duda, siempre coge la más tetuda. :arriba:
  #2 (permalink)  
Antiguo 08/10/2014, 12:38
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Duda con expresión regular

Se me ocurre que, en lugar de comillas, uses espacios, de este modo, las subcadenas se separarían así: 1f1,3er3 12,4124 12ssss 12ss,ss2.

Código Javascript:
Ver original
  1. var regexp = /^(\s?[\w\,]{1,30}\s?)*$/gi,
  2.     string = "1f1,3er3 12,4124 12ssss 12ss,ss2";
  3. console.log(regexp.test(string)); //true

La \w representa a números y letras, la \s a espacios en blanco, el asterisco indica que pueden haber de cero a más grupos de expresiones como el indicado a su izquierda. La g permitirá una búsqueda global y la i evitará la diferenciación entre mayúsculas y minúsculas. El signo de interrogación indica que, la expresión indicada a su izquierda, es opcional.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 09/10/2014, 01:24
Avatar de crcbad  
Fecha de Ingreso: enero-2005
Mensajes: 302
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Duda con expresión regular

Buenas,

Gracias por la ayuda!

Lamentablemente, deben de ir encerrados entre dobles comillas cada patrón, y cada patrón separado por coma.

¿Podrias adaptarlo? Voy a intentar también por si lo consigo!
__________________

:cool: [ http://eruben.sytes.net ] :cool:


Las dos frases que te ayudarán a salir adelante:
  • No hay mujer fea, solo copas de menos. :borracho:
  • Ante la duda, siempre coge la más tetuda. :arriba:
  #4 (permalink)  
Antiguo 09/10/2014, 03:00
Avatar de crcbad  
Fecha de Ingreso: enero-2005
Mensajes: 302
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Duda con expresión regular

Buenas,

He conseguido hacer esto:

Código:
var re = /^(\"[\w\s\,]{1,30}\"(\,\"[\w\s\,]{1,30}\")(\,\"[\w\s\,]{1,30}\"))*$/gi
Eso lo validad para 3 casos, si quisiera poner 6 casos, la expresión sería el doble de grande, hay alguna forma de abreviarlo?
__________________

:cool: [ http://eruben.sytes.net ] :cool:


Las dos frases que te ayudarán a salir adelante:
  • No hay mujer fea, solo copas de menos. :borracho:
  • Ante la duda, siempre coge la más tetuda. :arriba:
  #5 (permalink)  
Antiguo 09/10/2014, 03:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Duda con expresión regular

Haciéndolo así:

Código Javascript:
Ver original
  1. var regexp = /^(\,?\'[\w\,]{1,30}\')*$/gi,
  2.     string = "'1f1,3er3','12,4124','12ssss','12ss,ss2'";
  3. console.log(regexp.test(string)); //true

Valida todas las subcadenas encontradas. Esto es porque, el asterisco del final, busca de cero a más coincidencias, pudiendo ser incluso más que las que ves en el ejemplo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 09/10/2014, 03:16
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Duda con expresión regular

La expresión regular que propones no funciona ni con el texto que propones sin comas:
Código javascript:
Ver original
  1. /^[A-Z0-9]{1,30}(,[A-Z0-9]{1,30})*$/.test('1f13er3,12412412ssss,12ssss2') // false
Porque tu expresión regular no acepta minúsculas. Para ello usa añade i al final de la expresión (\w también concuerda con la raya baja _ así que siendo estrictos, en tu caso no serviría).
Código javascript:
Ver original
  1. /^[A-Z0-9]{1,30}(,[A-Z0-9]{1,30})*$/i.test('1f13er3,12412412ssss,12ssss2') // true

Cita:
El problema es que a esos textos alfanuméricos me comentan que les quieren tener la posibilidad de meter una coma. Por lo que había pensado que cada texto alfanumérico estuviera encerrado en comillas.
Por lo que comentas, entiendo que los textos separados entre comas es obligatorio. Pero que los textos vayan encerrados en comillas es una opción propuesta por ti.

Esta sería la solución que pides:
Código javascript:
Ver original
  1. var regex = /^\"[A-Z0-9,]{1,30}\"(,\"[A-Z0-9,]{1,30}\")*$/i;
  2. regex.test('"1f13er3","12412412ssss","12ssss2"') // true
  3. regex.test('"1f1,3er3","12,4124,12ssss","12ss,ss2"') //

Sin embargo podrían haber otras maneras de añadir comas. Por ejemplo escapándolas con la contrabarra \.

Código javascript:
Ver original
  1. /^([A-Z0-9]|\\,){1,30}(,([A-Z0-9]|\\,){1,30})*$/i.test('1f1\\,3er3,12\\,4124,12ssss,12ss\\,ss2')

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils
  #7 (permalink)  
Antiguo 09/10/2014, 04:26
Avatar de crcbad  
Fecha de Ingreso: enero-2005
Mensajes: 302
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Duda con expresión regular

Gracias a los dos!

Aunque las dos funcionan, pero por simplicidad y elegancia me quedo con la de Alexis :P
__________________

:cool: [ http://eruben.sytes.net ] :cool:


Las dos frases que te ayudarán a salir adelante:
  • No hay mujer fea, solo copas de menos. :borracho:
  • Ante la duda, siempre coge la más tetuda. :arriba:

Etiquetas: input, regular
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 22:05.