Donc, je suis en train d'écrire un formulaire d'inscription et j'ai besoin que le nom d'affichage ne soit que des chiffres, des lettres et des caractères de soulignement. Jetez un oeil à mon code et dites-moi ce que je fais mal.Qu'est-ce que j'ai fait de mal ici? [Javascript Regex]
<form method="post" action="/" onsubmit="return check_form()">
<input type="text" id="display-name" name="display-name" maxlength="255" />
<input type="submit" />
</form>
<script type="text/javascript">
<!--
var name_regex = /^([a-zA-Z0-9_])+/
function check_form()
{
if (!name_regex.test(document.forms[0].elements[0].value))
{
document.forms[0].elements[0].focus()
alert("Your display name may only contain letters, numbers and underscores")
return false
}
}
-->
</script>
Il est évidemment été dégrossi de ne pas inclure quoi que ce soit non lié au problème, mais même cet extrait ne fonctionne pas.
\ w est un raccourci pour la lettre, chiffres et caractères de soulignement. Je le simplifierais à/^ \ w + $/ –
@Juan, dans la plupart des lanugages, ce qui compte comme un mot dépend du système et des paramètres régionaux, n'est-ce pas le cas dans JS? – tobyodavies
La plupart des références RegEx listent simplement un raccourci vers [a-zA-Z_0-9]. Java: http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern. PHP utilise POSIX qui dit essentiellement la même chose. S'applique aussi à JS. '/\w/.test (" é ")' renvoie false lorsque mes paramètres régionaux sont définis sur pt-br. Je n'ai jamais entendu parler de \ w étant vraiment intelligent sur la détection d'autres paramètres régionaux. –