Le regex suivant devrait être ce que vous recherchez (explication ci-dessous):
\A[-\w.]*\z
La classe de caractères suivante devrait correspondre uniquement les caractères que vous souhaitez autoriser:
[-a-zA-z0-9_.]
Vous pouvez raccourcir ce qui suit depuis \w
est équivalent à [a-zA-z0-9_]
:
[-\w.]
Notez que pour inclure une -
littérale dans votre classe de personnage, il doit être le premier caractère car sinon il sera interprété comme une plage (par exemple [a-d]
est équivalent à [abcd]
). L'autre option est de l'échapper avec un antislash.
Normalement, .
signifie n'importe quel caractère à l'exception des retours à la ligne, et vous devez lui échapper pour correspondre à une période littérale, mais cela n'est pas nécessaire à l'intérieur des classes de caractères.
Le \A
et \z
sont ancres au début et à la fin de la chaîne, sinon vous correspondre à des chaînes qui contiennent les caractères autorisés, au lieu de chaînes qui contiennent seulement les caractères autorisés.
Le *
signifie zéro ou plusieurs caractères, si vous le voulez exiger un ou plusieurs caractères changent la *
à un +
.
F.J: merci! – user984621
J'aime votre explication, mais cela ne fonctionne pas pour moi.La réponse de @ seamus-abshere fonctionne très bien. – monteirobrena
Comment cela fonctionnera-t-il sur javascript? – Louie