.NET de l'expression Régulière qui vérifier la longueur et les caractères non-alphanumériques
J'ai besoin de Regexp pour valider la chaîne a une longueur minimale de 6 et contient au moins un caractère non alphanumérique e.g: "eN%{S$u)"
, "h9YI!>4j"
, "{9YI!;4j"
, "eN%{S$usdf)"
, "dfh9YI!>4j"
, "ghffg{9YI!;4j"
.
C'est bien le travail ^.*(?=.{6,})(?=.*\\d).*$"
mais dans les cas où la chaîne ne contient pas tous les numéros(e.g "eN%{S$u)"
) il n'est pas de travail.
OriginalL'auteur Reg | 2011-01-08
Vous devez vous connecter pour publier un commentaire.
Nous utilisons anticipation positif pour assurer il y a au moins 6 caractères. Puis nous validons le modèle qui ressemble au moins un caractère non alphanumérique (
[^0-9a-zA-Z]
). Le.*
le match de n'importe quel nombre de caractères autour de cette un caractère non-alphanumérique, mais par le temps que nous avons atteint ici nous avons déjà vérifié que nous sommes correspondant au moins à 6.est la regex que vous avez essayé. Voici quelques suggestions:
\d
correspond à un chiffre, et(?=.*\\d)
est une anticipation pour l'un d'entre eux. C'est pourquoi vous rencontrez les problèmes que vous avez mentionnés avec les chaînes commeeN%{S$u)
..*
qui suit en utilisant simplement.*\\d.*
.OriginalL'auteur marcog
marcog la réponse est assez bon, mais je préfère le faire dans l'autre sens, de sorte qu'il est plus facile d'ajouter encore plus de conditions (comme le fait d'avoir au moins un chiffre ou quoi que ce soit), et je voudrais utiliser paresseux quantificateurs parce qu'ils sont moins coûteux pour certains modèles:
Donc, si vous ajoutez le mentionné condition supplémentaire, il serait comme ceci:
Comme vous pouvez le voir, ce modèle est facilement extensible. Remarque qui est conçu pour être utilisé pour vérifier les matches seulement, sa capture n'est pas utile.
OriginalL'auteur Lucero
Garder facile.
Heureux de codage.
Modifier, pur "expression régulière":
Cette première affirme qu'il y a 6 lettres de n'importe quoi dans le regard, puis s'assure que, dans le "look-ahead" il y a quelque chose qui n'est pas l'alpha-numérique (il va "jeter" jusqu'à la première 5 caractères d'essayer de faire correspondre).
Cette entrée échoue:
lucero-1
Vérifiez de nouveau. Cette entrée n'est pas l'échec. Il passe l'expression régulière, comme indiqué dans les exigences -- "chaîne a une longueur minimale de 6 et contient au moins un caractère non alphanumérique". Dans ce cas, le "-" satisfait de la 2ème exigence et, ainsi, la longueur de la première. Belle inversion dans votre réponse, btw.
Je m'éloigne sans ancrages en raison de la seconde '.' match limit.
désolé, vous avez raison, bien sûr. J'ai raté quelque sorte l'omis d'ancrage, mon mauvais. +1 pour l'. 😉
OriginalL'auteur
Ce sujet(fixe):
^(?=.{6})(.*[^\w].*)$
Vérifier cela http://www.ultrapico.com/Expresso.htm c'est cool outil qui pourrait vous aider beaucoup dans les expressions régulières de l'apprentissage.
!@#$%^
Il semble que si l'expression a été brisé en quelque sorte (je m'attends à le voir quelques
.*
et\w
à leurs places respectives de l'expression à un sens).vous avez laissé tomber une barre oblique inverse dans l'un de vos modifications.
[^w]
doit être[^\w]
ou\W
.OriginalL'auteur Kuncevič