Vérifier le contenu d'un champ avec regex
Résolu
Southstyle
Messages postés
46
Statut
Membre
-
Southstyle Messages postés 46 Statut Membre -
Southstyle Messages postés 46 Statut Membre -
Bonjour,
J'aimerais vérifier que le champ d'un formulaire commence par au moins 4 chiffres, et se termine par un nom d'au moins deux lettres, le tout séparé par un espace.
En gros, le numéro postal et le nom de la ville. Exemples valides :
1211 Genève
1680 Romont
9434 Au
etc.
Je suppose que je dois utiliser regex, non ?
J'aimerais le vérifier onkeyup (et le champ devient vert) et onblur (car parfois les utilisateurs ont copié-collé un terme ou utilisent des modules remplissant les formulaires tout seul, comme Lazarus par exemple.
Merci pour votre aide et bonne semaine !
J'aimerais vérifier que le champ d'un formulaire commence par au moins 4 chiffres, et se termine par un nom d'au moins deux lettres, le tout séparé par un espace.
En gros, le numéro postal et le nom de la ville. Exemples valides :
1211 Genève
1680 Romont
9434 Au
etc.
Je suppose que je dois utiliser regex, non ?
J'aimerais le vérifier onkeyup (et le champ devient vert) et onblur (car parfois les utilisateurs ont copié-collé un terme ou utilisent des modules remplissant les formulaires tout seul, comme Lazarus par exemple.
Merci pour votre aide et bonne semaine !
2 réponses
-
Salut,
Tu vas effectivement devoir utiliser une expression régulière.
En html5 le plus simple est d'utiliser l'attribut pattern : https://www.w3schools.com/tags/att_input_pattern.asp
Attention, la vérification coté client ne substitue pas la vérification coté serveur.
Bonne journée, -
Bonjour,
Et côté regex, tu dois pouvoir utiliser ceci :
^(\d{4} [a-zA-Zéèùàïô]*)$
https://regex101.com/r/nD0tD2/1
var reg=new RegExp("^(\d{4} [a-zA-Zéèùàïô]*)$","g"); var result = reg.test(tontexte); //retourne true ou false
-
Bonjour,
Tout d'abord merci pour votre réponse.
Ensuite j'ai essayé d'adapter votre solution à mon code source, et je n'arrive pas à le faire fonctionner :<script type="text/javascript">
var npalieu=new RegExp("^(\d{4} [a-zA-Záàâäéèêëíìïîóòöôúùûü]*)$","g");
</script>
<input onkeyup="if(npalieu.test(this.value) = true) { this.style.backgroundColor='#CFC'; } else { this.style.backgroundColor='#FCC'; }" id="monchamp">
Lorsque je tape "1234 Abcd" le champ reste en rouge, donc non validé.
Vous arrivez à voir où est l'erreur ? -
heu... évite de mettre du javascript DIRECTEMENT dans le onkeyUp
préfère le mettre dans une fonction appellé via le onkeyup
comme ceci :<input onkeyup="testChamp(this);" id="monchamp">
function testChamp(elm){ var npalieu=new RegExp("^(\d{4} [a-zA-Záàâäéèêëíìïîóòöôúùûü]*)$","g"); var valeur = elm.value; if(npalieu.test(valeur) && valeur !="" ){ elm.style.backgroundColor='#CFC'; }else{ elm.style.backgroundColor='#FCC'; } } -
"elm" dans votre exemple correspond à l'ID de mon champ, n'est-ce pas ?
Si oui, ça ne marche toujours pas.
Est-ce que vous êtes bien sûr que l'expression régulière retournera TRUE dans les cas suivants :
1211 Genève
1700 Fribourg
et
9434 Au ?
Car quand je teste, mon champ reste toujours en rouge.
Dans le <head> j'ai mis la fonction :<script type="text/javascript">
function testChamp(monChamp) {
var npalieu=new RegExp("^(\d{4} [a-zA-Záàâäéèêëíìïîóòöôúùûü]*)$","g");
var valeur = monChamp.value;
if(npalieu.test(valeur) && valeur !="" ) {
monChamp.style.backgroundColor='#CFC';
} else {
monChamp.style.backgroundColor='#FCC';
}
}
</script>
Puis mon champ se présente comme suit :<input onkeyup="testChamp(this);" onblur="testChamp(this);" id="monChamp" />
-
-
-