Soy nuevo en expresiones regulares y estoy probando la validación en javascript / jquery usando expresiones regulares, agradezco cualquier ayuda.

La entrada es:

  1. cadena alfanumérica
  2. con un mínimo de 3 guiones bajos
  3. Los guiones bajos no pueden ser consecutivos
  4. Los guiones bajos no pueden separarse simplemente por cadenas vacías
  5. La cadena no puede comenzar o terminar con un guión bajo

Casos de prueba válidos:

  1. Abc_def_gh_123
  2. Abc_def_1h_103_BA
  3. Abc_def_1h_103_BA

Casos de prueba inválidos

  1. ___
  2. _ _ _
  3. Abc_d
  4. Abc_def_ghi_de21_
  5. Abc_def_fg
  6. Abc_def_fg_
  7. _Abc_def_fg

Había intentado regex en javascript

/^[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9]+_[a-zA-Z0-9]+$/

Pero falla, por ejemplo. si la cadena tiene más de 3 guiones bajos

2
Sheetal Mohan Sharma 2 sep. 2014 a las 14:27

3 respuestas

La mejor respuesta

Esta expresión regular debería hacer el trabajo:

/^([a-zA-Z0-9]+_){3,}[a-zA-Z0-9]+$/
6
fabian 2 sep. 2014 a las 10:41
/([a-zA-Z0-9]+_[a-zA-Z0-9]+){3,}$/mg

http://regex101.com/r/yQ2xS9/2

Descompostura:

[a-zA-Z0-9]+ Comienza con cualquier número de letras minúsculas y mayúsculas, o números.

_[a-zA-Z0-9]+ Contiene un guión bajo seguido de otra secuencia de letras minúsculas / mayúsculas y números.

{3,}$ Mínimo de tres veces (tres lotes de guiones bajos)

Feliz codificación :)

1
Richard Parnaby-King 2 sep. 2014 a las 10:43
(?=^[a-zA-Z0-9]+?_[a-zA-Z0-9]+?_[a-zA-Z0-9]+?_[a-zA-Z0-9_]*$)(?!.*?_$)(?!.*?_{2,}.*)^.*$

Prueba esto. Esto funciona.

Ver demo.

http://regex101.com/r/pP3pN1/5

2
vks 2 sep. 2014 a las 11:09