RegEx lettre ou . ou -
Zyrkon
Messages postés
10
Statut
Membre
-
Zyrkon Messages postés 10 Statut Membre -
Zyrkon Messages postés 10 Statut Membre -
Salut,
je débute en javascript,
après quelques heures de recherche je n'ai rien trouvé de concluant pour avoir une regex qui me permettrait de valider un champ qui peut contenir:
des lettres (avec ou sans accents peut importe)
des .
des -
autant de fois chacun que désiré peu importe l'ordre
ex: .blabla-bla.blaa--..b ou autre affaire dans ce genre
j'ai trouvé un truc du genre:
([a-zA-Z]|\.|-)*
que j'utilise comme ceci :
ceci se retrouve dans un fichier .js
mais lorsque je met 123 par exemple dans le champ Auteur du formulaire ça valide au lieu de bloquer :/
le code de la fonction ou ceci est utilisé:
les autres validations (avec message2 et message3) fonctionnent très bien avec leur propres règles de regex...
aurais-je loupé quelque chose ? merci de votre aide :)
je débute en javascript,
après quelques heures de recherche je n'ai rien trouvé de concluant pour avoir une regex qui me permettrait de valider un champ qui peut contenir:
des lettres (avec ou sans accents peut importe)
des .
des -
autant de fois chacun que désiré peu importe l'ordre
ex: .blabla-bla.blaa--..b ou autre affaire dans ce genre
j'ai trouvé un truc du genre:
([a-zA-Z]|\.|-)*
que j'utilise comme ceci :
function validerAuteur(auteurTester){
var reg3 = new RegExp('([a-zA-Z]|\.|-)*');
return(reg3.test(auteurTester));
}
ceci se retrouve dans un fichier .js
mais lorsque je met 123 par exemple dans le champ Auteur du formulaire ça valide au lieu de bloquer :/
le code de la fonction ou ceci est utilisé:
function valider2() {
var message = "";
var message1 = "";
var message2 = "";
var message3 = "";
var auteurTest = (document.forms[0].auteur.value);
var anneeTest = (document.forms[0].annee.value);
var nbPagesTest = (document.forms[0].nbPages.value);
if ((document.forms[0].titre.value!="") && (document.forms[0].isbn.value!="")){
//vérification de l'auteur, de la date et du nombres de pages
//si auteur pas vide on vérifie le contenu
if (auteurTest != "") {
if (!validerAuteur(auteurTest)){
message1 = "L'auteur ne peut contenir que:";
message1 += "\n\t-des lettres";
mesasge1 += "\n\t-des tirets (-)";
mesasge1 += "\n\t-des points (.)";
} //pas de else, auteur ok
}
//si annee pas vide on vérifie le contenu
if (anneeTest != "") { //ok
//alert(anneeTest);
if (!validerEntier(anneeTest)){
message2 = "L'année doit-être un entier.";
} //pas de else, annee ok
}
//si nbPages pas vide on vérifie le contenu
if (nbPagesTest != "") { //ok
if (!validerEntier(nbPagesTest)){
message3 = "Le nombre de pages doit-être un entier.";
} //pas de else, pages ok
}
} else {
message += "L'ISBN et le titre sont obligatoires";
}
//assembler les messages ici
if (message1 != "") {
message = message1;
}
if (message2 != "") {
if (message != "") {
message += "\n---";
message += "\n" + message2;
} else {
message = message2;
}
}
if (message3 != "") {
if (message != "") {
message += "\n---";
message += "\n" + message3;
} else {
message = message3;
}
}
if (message == "") {
return true;
} else {
alert(message);
return false;
}
}
les autres validations (avec message2 et message3) fonctionnent très bien avec leur propres règles de regex...
aurais-je loupé quelque chose ? merci de votre aide :)
A voir également:
- RegEx lettre ou . ou -
- Clavier iphone chiffre et lettre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Caractere speciaux lettre - Guide
- Changer lettre disque dur - Guide
- Chiffre en lettre - Télécharger - Outils professionnels
16 réponses
et pourquoi pas rajouter une condition qui renvoie un texte d'erreur si il y a des chiffre genre == [0-9]*
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ou bien peut être un truc du genre
'([a-zA-Z]|\.|-)*' && !([0-9]*) bon je suis pas sur de la syntaxe
'([a-zA-Z]|\.|-)*' && !([0-9]*) bon je suis pas sur de la syntaxe
bah le truc c'est qu'il ne faut pas de caractères spéciaux
en fait il ne faut que des lettres des . ou des -
:/
ce qui rend cette regex complexe je trouve
on peut aussi y aller en mode combinaison de if et de regex mais j'ai pas trouvé d'algo correct pour :(
en fait il ne faut que des lettres des . ou des -
:/
ce qui rend cette regex complexe je trouve
on peut aussi y aller en mode combinaison de if et de regex mais j'ai pas trouvé d'algo correct pour :(
malheureusement lorsque je met par exemple 123 dans le champ associé, ça valide le formulaire quand même, hors cela ne devrait pas :(
peut-être faudrait-il revoir la façon dont j'utilise cette regex (mais je l'utilise comme les autres..)
exemple pour les autres :
peut-être que dans mon code plus haut (dans la première fonction qui utilise l'ensemble) j'ai mal codé quelque chose (assemblage des messages ? vérification des conditions ?) mais cela me semble plutôt correct, au besoin je recolle le code avec indentation ;)
peut-être faudrait-il revoir la façon dont j'utilise cette regex (mais je l'utilise comme les autres..)
exemple pour les autres :
function validerMail(mailTester){
var reg1 = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');
return(reg1.test(mailTester));
}
function validerMDP(mdpTester){
var reg2 = new RegExp('^(?=.{6,15}$)(?=.*[0-9])(?=.*[a-zA-Z]).*');
return(reg2.test(mdpTester));
}
peut-être que dans mon code plus haut (dans la première fonction qui utilise l'ensemble) j'ai mal codé quelque chose (assemblage des messages ? vérification des conditions ?) mais cela me semble plutôt correct, au besoin je recolle le code avec indentation ;)
J'ai essayer aussi, toujours le même résultat (ça laisse passé 123 dans le champ auteur) :/ ce qui ne devrait pas arriver :/
chez moi, elle bloque les numériques:
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
Pattern: <input type="text" size="30" id="pattern" disabled="disable"><br />
<input type="text" placeholder="chaîne à tester" id="toto">
<button>Test</button>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var pattern = /^[a-zA-Z\u00E0-\u00FC\.-]+$/i;
$('#pattern').val(pattern);
$('button').click(function(){
var string = $('#toto').val();
var test = new RegExp(pattern);
alert(test.test(string) ? string + ' est valide': string + ' est invalide');
});
</script>
</body>
</html>
pour info, c'est pour un devoir (que j'ai déjà remis)
je voudrais résoudre le trouble pour mieux comprendre ce qui ne va pas et comment le résoudre si jamais je retombe dans le même genre de problèmes par la suite
Voici le script au complet:
je voudrais résoudre le trouble pour mieux comprendre ce qui ne va pas et comment le résoudre si jamais je retombe dans le même genre de problèmes par la suite
Voici le script au complet:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function getPreferredStyleSheet() {
var i, a;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("rel").indexOf("alt") == -1
&& a.getAttribute("title")
) return a.getAttribute("title");
}
return null;
}
function getActiveStyleSheet() {
var i, a;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("title")
&& !a.disabled) return a.getAttribute("title");
}
return null;
}
function setActiveStyleSheet(title) {
var i, a, main;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}
function initiate() {
document.getElementById("theme1").style.display="block";
document.getElementById("theme1").style.backgroundColor="#00ff00";
document.getElementById("theme1").style.width="30px";
document.getElementById("theme1").style.textDecoration="none";
document.getElementById("theme2").style.display="block";
document.getElementById("theme2").style.backgroundColor="#000000";
document.getElementById("theme2").style.width="30px";
document.getElementById("theme2").style.textDecoration="none";
document.getElementById("theme1").onclick = function() {
setActiveStyleSheet("theme1");
return false;
}
document.getElementById("theme2").onclick = function() {
setActiveStyleSheet("theme2");
return false;
}
}
//permet d'initialiser certaines fonctionnalité lors du chargement des pages
window.onload = function(e) {
var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);
initiate();
//permet de voir s'il y a le formulaire de login pour appeler la bonne fonction de vérification
var vLogin = document.getElementById("loginForm");
if (vLogin) {
document.forms[0].onsubmit = function() {
return valider1();
}
}
//permet de voir s'il y a le formulaire d'ajout de livre pour appeler la bonne fonction de vérification
var vAjouter = document.getElementById("addBook");
if (vAjouter) {
document.forms[0].onsubmit = function () {
return valider2();
}
}
}
window.onunload = function(e) {
var title = getActiveStyleSheet();
createCookie("style", title, 365);
}
//permet de vérifier le bon format du courriel et du mot de passe lors de l'envoi du formulaire
function valider1() { //fonctionne
var message = "";
//on vérifie s'ils sont vides
if ((document.forms[0].numid.value!="") && (document.forms[0].mdp.value!="")){
//variables pour la vérification par les fonctions
var idTest = (document.forms[0].numid.value);
var mdpTest = (document.forms[0].mdp.value);
//pas vides alors on vérifie le courriel
if (validerMail(idTest)){
//on vérifie le mot de passe
if (!validerMDP(mdpTest)){
//mdp incorrect, on contruit le message d'erreur
message += "Mot de passe invalide!";
message += "\n\nLe mot de passe doit respecter les règles suivantes:";
message += "\n\t-6 caractères minimum";
message += "\n\t-15 caractères maximum";
message += "\n\t-contenir au moins un chiffre";
message += "\n\t-contenir au moins une lettre";
} //pas de else, tout est bon
} else { //l'id est incorrect
message += "L'ID doit-être un courriel valide.";
message += "\n\nExemple:";
message += "\n\n\texemple@domain.com";
}
} else { //le numId et/ou le mdp est vide, on construit le message d'erreur
message += "Le numéro d'ID et le mot de passe sont obligatoires";
}
//vérification des messages pour voir s'il y a des erreurs et donc envoyer le formulaire ou non
if (message == "") {
return true;
} else {
alert(message);
return false;
}
}
//permet de vérifier le bon format de certains des champs du formulaire d'ajout d'un livre
function valider2() {
//variables d'usage pour vérifications diverses:
//pour les messages d'erreurs
var message = "";
var message1 = "";
var message2 = "";
var message3 = "";
//pour les contenu à vérifier
var auteurTest = (document.forms[0].auteur.value);
var anneeTest = (document.forms[0].annee.value);
var nbPagesTest = (document.forms[0].nbPages.value);
//on vérifie s'ils sont vides (pour le titre et l'isbn obligatoire)
if ((document.forms[0].titre.value!="") && (document.forms[0].isbn.value!="")){
//pas vides donc vérification de l'auteur, de la date et du nombres de pages.
//si auteur pas vide on vérifie le contenu
if (auteurTest != "") {
if (!validerAuteur(auteurTest)){ //la regex associée ne fonctionne pas, voir plus bas
//contenu incorrect, on construit le message d'erreur
message1 = "L'auteur ne peut contenir que:";
message1 += "\n\t-des lettres";
mesasge1 += "\n\t-des tirets (-)";
mesasge1 += "\n\t-des points (.)";
} //pas de else, auteur ok
}
//si annee pas vide on vérifie le contenu
if (anneeTest != "") {
if (!validerEntier(anneeTest)){
message2 = "L'année doit-être un entier.";
} //pas de else, annee ok
}
//si nbPages pas vide on vérifie le contenu
if (nbPagesTest != "") {
if (!validerEntier(nbPagesTest)){
message3 = "Le nombre de pages doit-être un entier.";
} //pas de else, pages ok
}
} else { // l'isbn et/ou le titre est vide, on construit le message d'erreur
message += "L'ISBN et le titre sont obligatoires";
}
//assemblage des messages ici pour avoir qu'une seule alerte qui rassemble tout
if (message1 != "") {
message = message1;
}
if (message2 != "") {
if (message != "") {
message += "\n---";
message += "\n" + message2;
} else {
message = message2;
}
}
if (message3 != "") {
if (message != "") {
message += "\n---";
message += "\n" + message3;
} else {
message = message3;
}
}
if (message == "") {
return true;
} else {
alert(message);
return false;
}
}
//permet de vérifier le format d'un courriel
function validerMail(mailTester){ //fonctionne
var reg1 = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');
return(reg1.test(mailTester));
}
//permet de vérifier le format du contenu du mot de passe
function validerMDP(mdpTester){
var reg2 = new RegExp('^(?=.{6,15}$)(?=.*[0-9])(?=.*[a-zA-Z]).*');
return(reg2.test(mdpTester));
}
//permet de vérifier le format du contenu de l'auteur
function validerAuteur(auteurTester){ //aucune regex trouvées pour ça, voici quelques exemples possibles mais aucuns ne fonctionnent correctement
//var reg3 = new RegExp('/^[a-zA-Z\u00E0-\u00FC\.-]'.'i');
var reg3 = new RegExp('([a-zA-Z]|\.|-)*');
//var reg3 = new RegExp('/^[\w\u00E0-\u00FC\.-]','$/i');
//var reg3 = /^[\w\u00E0-\u00FC\.-]+$/i;
//var reg3 = new RegExp(/[^a-z|\.|\-]/i);
return(reg3.test(auteurTester));
}
//permet de vérifier le format d'un entier
function validerEntier(entierTester){
var reg4 = new RegExp('^[0-9]+$');
return(reg4.test(entierTester));
}