java - Comment tester si une chaîne contient à la fois une lettre et un chiffre
J'ai besoin d'une regex qui va satisfaire les deux conditions.
Il devrait me donner vrai que si une Chaîne contient à la fois de A-Z et 0-9.
Voici ce que j'ai essayé:
if PNo[0].matches("^[A-Z0-9]+$")
Il ne fonctionne pas.
source d'informationauteur Lucky
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que l'expression régulière ci-dessous est ralenti par le look, mais il devrait fonctionner indépendamment:
La regex affirme qu'il n'est un caractère alphabétique majuscule
(?=.*[A-Z])
quelque part dans la chaîne, et affirme qu'il n'est un chiffre(?=.*[0-9])
quelque part dans la chaîne, et puis il vérifie si tout est soit le caractère alphabétique ou un chiffre.Il est plus facile à écrire et à lire si vous utilisez deux expressions régulières:
Mieux encore, écrire une méthode:
Une lettre peut être avant ou après les chiffres, de sorte que cette expression devrait fonctionner:
Voici un exemple de code qui utilise cette expression:
Cela devrait résoudre votre problème:
Mais c'est illisible. Je suggère de vérifier d'abord l'entrée avec "^[A-Z0-9]+$", puis vérifiez avec "[A-Z]" pour s'assurer qu'il contient au moins une lettre de vérifier ensuite avec "[0-9]" pour s'assurer qu'il contient au moins un chiffre. De cette façon, vous pouvez ajouter de nouvelles restrictions facilement et code restera lisible.
Voici la regex pour vous
De base:
Match dans la ligne de chaîne:
.
Match de 0 ou de toute somme de tous les caractères:
*
Correspondent à rien dans la ligne courante:
.*
Correspondre à n'importe quel caractère dans le jeu (la plage) de caractères:
[start-end]
Correspondre à l'un des regex d'un groupe:
(regex1|regex2|regex3)
Noter que le début et la fin vient de ASCII commande et le départ doit être avant la fin. Par exemple, vous pouvez faire
[0-Z]
mais pas[Z-0]
. Voici la table ASCII pour votre référenceVérifier la chaîne de contre regex
Appelez simplement
yourString.matches(theRegexAsString)
Vérifier si la chaîne contient des lettres:
Vérifier si il y a une lettre:
yourString.matches(".*[a-zA-Z].*")
Vérifier si il y a un minuscule lettre:
yourString.matches(".*[a-z].*")
Vérifier si il y a un upper en coffret lettre:
yourString.matches(".*[A-Z].*")
Vérifier si la chaîne contient des nombres:
yourString.matches(".*[0-9].*")
Vérifier si la chaîne contient à la fois le numéro et lettre:
La façon la plus simple est de faire correspondre deux fois avec les lettres et les chiffres
yourString.matches(".*[a-zA-Z].*") && yourString.matches(".*[0-9].*")
Si vous préférez afin de correspondre avec tout tous ensemble, la regex sera quelque chose comme: Correspondre à une corde qui à un moment a un personnage et puis il y a un certain nombre que par la suite dans n'importe quelle position, ou l'inverse. Si votre regex sera:
yourString.matches(".*([a-zA-Z].*[0-9]|[0-9].*[a-zA-Z]).*")
Supplémentaire regex pour votre référence:
Vérifier si la chaîne étoiles avec lettre
yourString.matches("[a-zA-Z].*")
Vérifier si la chaîne se termine avec le numéro
yourString.matches(".*[0-9]")
Ce sujet
([A-Z].*[0-9]+)|([0-9].*[A-Z]+)
?