72 votes

Modèle Regex pour faire correspondre au moins 1 chiffre et 1 caractère dans une chaîne

j'ai une regex

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

cela n'autorise que les caractères alphanumériques, mais aussi si j'insère uniquement des chiffres ou des caractères, il l'accepte également. Je veux que cela fonctionne comme si le champ devait accepter uniquement des valeurs alphanumériques, mais la valeur doit contenir au moins 1 caractère et 1 chiffre.

123voto

phihag Points 89765

Pourquoi ne pas d'abord appliquer l'ensemble du test, puis ajouter des tests individuels pour les caractères et les nombres ? Quoi qu'il en soit, si vous voulez tout faire dans une seule expression régulière, utilisez l'anticipation positive :

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

21voto

Rob W Points 125904

Ce RE fera :

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

Explication de RE :

  • Faites correspondre l'un des éléments suivants :
    1. Au moins un chiffre, puis une lettre ou
    2. Au moins une lettre, puis un chiffre plus
  • Tous les chiffres et lettres restants
  • (?:...) crée un groupe non référencé
  • /i est l' indicateur ignorer la casse , de sorte que a-z == a-zA-Z .

8voto

Lonely Neuron Points 2839

Bien que la réponse acceptée soit correcte, je trouve cette expression régulière beaucoup plus facile à lire :

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

7voto

user2043372 Points 1

Cette solution accepte au moins 1 chiffre et au moins 1 caractère :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X