web-dev-qa-db-fra.com

Regex pour faire correspondre les mots d'une certaine longueur

Je voudrais savoir la regex pour faire correspondre les mots tels que les mots ont une longueur maximale. par exemple, si un mot a une longueur maximale de 10 caractères, j'aimerais que l'expression régulière corresponde, mais si la longueur dépasse 10 caractères, l'expression régulière ne devrait pas correspondre.

J'ai essayé

^(\w{10})$

mais cela ne m'amène à des correspondances que si la longueur minimale du mot est de 10 caractères. Si le mot comporte plus de 10 caractères, il correspond toujours, mais uniquement avec les 10 premiers caractères.

54
Anand Hemmige

Je pense que tu veux \w{1,10}\b. Le \b correspond à une limite de mot.

Bien sûr, vous pouvez également remplacer le \b et fait ^\w{1,10}$. Cela correspond à un mot d'au plus 10 caractères tant que c'est le seul contenu de la chaîne. Je pense que c'est ce que vous faisiez avant.

Comme il s'agit de Java, vous devrez en fait échapper aux barres obliques inverses: "\\w{1,10}\\b". Vous le saviez probablement déjà, mais cela m'est arrivé avant.

62
Tikhon Jelvis
^\w{0,10}$ # allows words of up to 10 characters.
^\w{5,}$   # allows words of more than 4 characters.
^\w{5,10}$ # allows words of between 5 and 10 characters.
37
Tim Pietzcker

Longueur des caractères à apparier.

{n,m}  n <= length <= m
{n}    length == n
{n,}   length >= n

Et par défaut, le moteur est gourmand pour correspondre à ce modèle. Par exemple, si l'entrée est 123456789,\d {2,5} correspondra à 12345 dont la longueur est 5.

Si vous voulez que le moteur retourne quand la longueur de 2 correspond, utilisez\d {2,5}?

23
Kleenestar

Même si je cherchais la même expression régulière, je voulais aussi inclure tous les caractères spéciaux et les espaces. Donc, voici la regex pour cela:

^[A-Za-z0-9\s$&+,:;=?@#|'<>.^*()%!-]{0,10}$
0
Pardeep Dogra