Busqué mucho, pero no tengo mucha experiencia con patrones de expresiones regulares y su estructura.

Aquí están las reglas para el patrón

  • Ignorar las mayúsculas y minúsculas (a o AN) es lo mismo, no importa
  • Se aceptan números pero no se requieren> (nombre) y (nombre3) y (3nombre) se aceptan
  • Solo se acepta 1 número en toda la palabra> (nombre1) pero no se acepta (nombre11)
  • El número no puede estar en medio de la palabra> (nombre) no se acepta
  • Sin mínimo pero máximo de 12 caracteres> (namenamenamex) no se acepta
  • No se aceptan caracteres especiales (solo caracteres y números)> (# na $ me%) no se acepta

Si es difícil tener una expresión regular para todas estas condiciones, se agradecerá cualquier cosa similar (incluso si puede ajustarse a 5 o al menos 4 de estas condiciones)

-2
Ahmed Mohsen 9 ago. 2020 a las 09:20

2 respuestas

La mejor respuesta

No es la más compacta, pero legible:

^(([0-9][a-zA-Z]{0,11})|([a-zA-Z]{0,11}[0-9])|([a-zA-Z]{1,12}))$

3 casos:

  • dígito, 0 a 11 letras
  • 0 a 11 letras, dígito
  • 1 a 12 letras
2
Flutterish 9 ago. 2020 a las 06:53
/^(?=.{0,12}$)([0-9]?[a-zA-Z]+[0-9]?)$/

Esto debería coincidir con él.

  • Comienza con una anticipación positiva para verificar la longitud de la cadena, entre 1 y 12 caracteres inclusive.
  • Un solo número al principio es opcional.
  • 1 o más caracteres alfanuméricos que no distinguen entre mayúsculas y minúsculas en el medio, no se aceptan caracteres especiales.
  • Finalmente, un número opcional al final.

Editar: para satisfacer la regla de 1 palabra y 1 número, se agregó una anticipación negativa:

/^(?=.{0,12}$)(?!\d.*\d)(\d?[a-zA-Z]+\d?)$/
3
Sean Hay 9 ago. 2020 a las 07:09