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 !
A voir également:
- Vérifier le contenu d'un champ avec regex
- Verifier compatibilite windows 11 - Guide
- Verifier un lien - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Word a trouvé du contenu illisible - Guide
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,
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 :
https://regex101.com/r/nD0tD2/1
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 :
Lorsque je tape "1234 Abcd" le champ reste en rouge, donc non validé.
Vous arrivez à voir où est l'erreur ?
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 :
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 :
Puis mon champ se présente comme suit :
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" />
C'est génial, je ne connaissais pas du tout l'attribut "pattern". Je vais me pencher davantage sur ce sujet car ça peut être super intéressant (notamment pour retourner un message dans la langue du navigateur de l'utilisateur).