solo regulares regular que probar numeros mayores letras expresiones expresion example especiales espacios espacio ejemplos caracteres blanco alfanumerico javascript regex validation pattern-matching

javascript - regulares - Patrón Regex para que coincida con al menos 1 número y 1 carácter en una cadena



javascript regex example (7)

Tengo una expresión regular

/^([a-zA-Z0-9]+)$/

esto solo permite caracteres alfanuméricos, pero también si solo inserto número (s) o solo carácter (s), entonces también lo acepta. Quiero que funcione como si el campo solo aceptara valores alfanuméricos, pero el valor debe contener al menos 1 carácter y 1 número.


¿Por qué no aplicar primero la prueba completa y luego agregar pruebas individuales para los personajes y números? De todos modos, si quieres hacerlo todo en una expresión regular, usa un lookahead positivo:

/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/


Esta solución acepta al menos 1 número y al menos 1 carácter:

[^/w/d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*))


Este RE hará:

/^(?:[0-9]+[a-z]|[a-z]+[0-9])[a-z0-9]*$/i

Explicación de RE:

  • Haga coincidir cualquiera de los siguientes:
    1. Al menos un número, luego una letra o
    2. Al menos una letra, luego un número más
  • Cualquier número y letras restantes

  • (?:...) crea un grupo sin referencia
  • /i es la bandera de ignorar caso , de modo que az == a-zA-Z .

Puedo ver que otros respondedores te han dado una solución completa. El problema con las expresiones regulares es que pueden ser difíciles de mantener / comprender.

Una solución más fácil sería retener su expresión regular existente, luego crear dos nuevas expresiones regulares para probar su "al menos un alfabético" y "al menos un número".

Entonces, prueba para esto:

/^([a-zA-Z0-9]+)$/

Luego esto :-

//d/

Luego esto :-

/[A-Z]/i

Si su cadena pasa las tres expresiones regulares, tiene la respuesta que necesita.


Si bien la respuesta aceptada es correcta, creo que esta expresión regular es mucho más fácil de leer:

REGEX = "([A-Za-z]+[0-9]|[0-9]+[A-Za-z])[A-Za-z0-9]*"


Tal vez un poco tarde, pero esta es mi RE:

/^(/w*(/d+[a-zA-Z]|[a-zA-Z]+/d)/w*)+$/

Explicación:

/w* -> 0 o más dígitos alfanuméricos, al principio

/d+[a-zA-Z]|[a-zA-Z]+/d -> un dígito + una letra O una letra + un dígito

/w* -> 0 o más dígitos alfanuméricos, de nuevo

Espero que sea comprensible