Je cherche une regex plutôt spécifique et je l'ai presque presque mais pas tout à fait.
Je veux une regex qui nécessiterait au moins 5 characteurs, où au moins un de ces caractères est em> une valeur numérique ou em> un caractère non alphanumérique. p> C'est ce que j'ai jusqu'à présent: p> donc le problème est la partie "ou". Il permettra des valeurs non alphanumériques, mais nécessite toujours au moins une valeur numérique. Vous pouvez voir que j'ai le ou l'opérateur "|" entre mes numériques requis et le non-alphanumérique, mais cela ne semble pas fonctionner. P> Toute suggestion serait géniale. p> p>
5 Réponses :
Que diriez-vous comme ça? Pour la longueur 5,20 Veuillez utiliser la fonction SHLEN normale P> P>
Cela ne fonctionne pas réellement, comme si vous voulez un caractère non alphanumérique ou numérique au début ou à la fin, cela échouera. Cependant, vous m'avez eu sur la bonne voie.
Avez-vous vraiment testé? Cela devrait fonctionner pour le caractère non alphanumérique ou numérique au début ou à la fin.
Est-il vraiment nécessaire de tout cacher dans une regex géante? Utilisez simplement la logique du programme (5 ≤ longueur (s) ≤ 20) ∧ (/ [[[[[[DICT:]] / ∨ / [^ [[: alpha:]] /) code>. Beaucoup plus lisible syntaxiquement et sémantiquement, je pense. P>
J'utilise l'adhésion à ASP.NET partout, il faudrait revenir en arrière et mettre en œuvre cette logique dans plusieurs endroits ainsi que des exceptions, etc. Il est plus facile d'utiliser RegEx dans la configuration des membres. Regex a sa place comme toutes les autres techniques de programmation.
Peut-être que cela peut fonctionner pour vous: et utilisez un code comme celui-ci pour vérifier la taille de la chaîne: p> if(str.len >= 5 && str.len =< 20 && regex.ismatch(str, "^.*[\d\W]+.*$")) { ... }
J'ai besoin de tout cela dans une regex pour mon problème actuel.
Une solution assez simple, une fois que S.Mark m'a eu sur la bonne voie, il suffit de fusionner mes morceaux numériques et non alphanumériques comme un.
Voici le regex final de quiconque intéressé: p>
^(?=.*[\d!@#$%\^*()_\-+=\[{\]};:|\./])(?=.*[a-z]).{5,20}$
Essayez: une explication courte: p>
peur pas ... cela ne nécessite pas que vous ayez un numéro ou un caractère non alphanumérique
Oui. Je suppose que tu ne l'ai pas testé correctement? Le look à venir oblige la chaîne à contenir au moins un chiffre ou non.
... et si vous vouliez dire "un numéro et B> caractère non alphanumérique" i> à la place, cela fera la truc: ^ (? =. * \ D ) (? =. * \ W). {5,20} $ code>
Pour un caractère non alphanumérique, vous pouvez utiliser \ W (caractère non-Word, c'est-à-dire qu'aucune de [A-ZA-Z0-9_]) au lieu de [! @ # $% \ ^ * () _ \ - + = [{] } ;: | \ ./]