Je recherche une regex qui vérifiera si la chaîne ne comprend que les lettres A-Z, les numéros, le soussecore ( aussi, puis-je vérifier la longueur avec regex? Sinon, je vais juste le faire avec PHP. P> p> _ code>) et un trait d'union ( - code>). J'ai essayé cela, mais cela ne fonctionne pas:
5 Réponses :
La regex devrait être: '^ [\ w \ d -] + $' p>
Expliquer que: '-' est un caractère spécial à l'intérieur des crochets à moins que i> c'est le premier ou le dernier caractère entre les crochets.
a-za-z _ code> peut être remplacé par \ w code>, 0-9 code> peut être remplacé par \ d code>
A-ZA-Z0-9 _ CODE> peut être remplacé par \ w code> uniquement.
Le plus court: p>
/ ^ [\ w -] + $ / p> blockQuote>
Le soussecore fait partie de \ w code>.
\ w comprend _. Notez que dans d'autres localités, \ W peut inclure des caractères accentués.
@seize si cela inclurait des caractères accentués dans d'autres locaux, no.
Vous devez mettre votre regex Exemples: Vous pouvez également utiliser le mot-clé suivant pour rendre votre regex facile à lire: / ^ a-za-z0-9 _- $ / code> dans une classe de caractères / [...] / code>.
Cela signifie que vous pouvez correspondre tout personnage em> dans la classe de caractères. Vous devez également spécifier un quantificateur, car / ^ [a-za-z0-9 _-] $ / code> correspondre à un seul caractère. p>
/ ^ [a-za-z0-9 _-] + / code> avec le signe + code> vous correspondez à un ou plusieurs fois
/ ^ [a-za-z0-9 _-] {1,} $ / code> identique que ci-dessus
/ ^ [a-za-z0-9 _-] {10,20} $ / code> entre 10 et 20 caractères long.
/ ^ [a-za-z0-9 _-] {15} $ / code> il doit être exactement em> 15 caractères. Vous pouvez l'utiliser pour vérifier la longueur de la chaîne. P>
/ ^ [\ w -] + $ / code> qui correspond à un caractère de mot (y compris le soulignement, les lettres et les chiffres) ou un tiret, une ou plusieurs fois. P>
Les réponses jusqu'à présent expliquer correctement la classe de caractères / Vous pouvez vérifier la longueur. + signifie "un ou plusieurs des précédents", * signifie zéro ou plus des moyens précédents "et {2,4}" entre 2 et 4 de la précédente ". P>
Vous ne pouvez pas spécifier la longueur doit être une prime, cependant. Spécifier que la longueur doit être même possible, mais non triviale: / ^ [A-ZA-Z0-9 _-] + $ code> / p>
^ (xx) {1,3} $ code> / correspond xx, xxxx ou xxxxxx. Le compte ici désigne ici le nombre de paires em>, pas le nombre de x'es p>
Je voudrais utiliser celui-ci: sur pourquoi je n'utilise pas un caractère "mot" est une lettre ou un chiffre ou le caractère de soulignement, c'est-à-dire n'importe quel caractère qui peut faire partie d'un "mot" perl. La définition des lettres et des chiffres est contrôlée par les tables de caractères de PCRE et peut varier si la correspondance spécifique à des paramètres régionaux est en cours. strong> Par exemple, dans les paramètres locaux "FR" (français), certains codes de caractères supérieurs à 128 sont utilisés pour les lettres accentuées, et celles-ci sont assorties par Ce comportement n'est pas souhaitable dans ce cas, alors si vous souhaitez vous soucier des paramètres régionaux, utilisez des classes de caractères droites au lieu du Si vous souhaitez spécifier une longueur minimale (par exemple 3): P> Si vous souhaitez spécifier une longueur minimale et maximale (par exemple 2 et 5): p> \ w code>, la citation suivante, prise de Référence de modèle PHP PCRE doit expliquer pourquoi vous ne devriez pas utiliser \ w code> dans cette situation strong>: p>
\ w code>. Em> p>
BlockQuote> \ w code> sténographie. p>
Vérifiez la longueur avec SHLEN. Regex est un outil, pas un marteau. :)