Fonction Match() en javascript [Fermé]

Signaler
-
 petitchevalroux -
Hello world,

voila j'aimerais faire un controle de saisie sur un champs d'un formulaire en utilisant la fonction match() et pas moyen d'arriver a ce que je veux.
L'utilisateur ne saisie que le 2eme et 3eme octets ainsi que les points de séparations.

Explications :

192.168 sont deux octets bloqués (afficher a l'ecran), l'utilisateur peut avoir les choix de saisie suivants :

1=> X.X
2=> X.XX
3=> X.XXX ( jusqu'a 255 seulement )
(on suppose que le 3eme octet ne comprend qu'un seul chiffre).


Voici mon code (faite un copier/coller pour + de clarté) :


function verif()
{
var formip1 = new RegExp( "([0-9]{1})+(\.)+([0-9]{1})","gi" );
var formip2 = new RegExp( "([0-9]{1})+(\.)+([0-9]{2})","gi" );
var formip3 = new RegExp( "([0-9]{1})+(\.)+([0-2]{1})+([0-5]{1})+([0-5]{1})","gi" );
var ip1=window.document.formulaire.ip.value.match(formip1);
var ip2=window.document.formulaire.ip.value.match(formip2);
var ip3=window.document.formulaire.ip.value.match(formip3);

if ( ip1 == null && ip2 == null && ip3 == null )
alert ("L'adresse ip n'est pas valide !");
else alert ("ok");
}


Voila g aussi essayé en php avec ereg, de toute facon c le mm principe et je n'y arrive pas plus.

Merci de m'aider si vous avez une idée.
N'hesitez pas a me poser des questions.

Xeus

8 réponses

Et pour tout le monde : attention aux quotes ! Quand on met des caractères spéciaux entre "" il faut les faire précéder d'un "\" si vous voulez annuler leur effet...
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Bonsoir, j'ai regardé un peu ton code et je l'ai testé. Et il ne marche pas. Jusque là je n'apprends rien à personne. Par contre je pense que ca vient de ton expression régulière qui est fausse. Mes conseils :

function verif()
{
  var taChaine = window.document.formulaire.ip.value ;
	var regexp = /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/ ;	
	if (taChaine.match(regexp))
		alert ("ok");
	else 
		alert ("L'adresse ip n'est pas valide !");
}


Ce code vérifie la totalité d'une IP, en prenant soin de vérifier que chaque octet est compris entre 0..255. J'ai trouvé cela sur http://www.regular-expressions.info/examples.html
Merci beaucoup alex ta fonction m'a sauvé.

Cependant j'aimerais comprendre un peu mieux la manière dont elle fonctionne parce que c'est un peut vague.

A quoi correspondent les ":" ?
Pourrais-tu éclairé la partie : " [01]?[0-9][0-9]? " de ton code stp ?


Merci encore une fois.

Xeus
Hé hé hé... Je n'ai pas du tout étudié cette expression régulière car elle me semblait pour le moins complexe (du fait qu'on veuille des valeurs qui ne dépassent pas 255). Donc je vais aller sur http://www.expreg.com et essayer de voir ce que signifie cette caine. Je t'encourage à aussi utiliser le forum de ce site si tu n'as pas de réponse d'ici 1h...

Avec un peu de logique, je peux cependant répondre à ta question n°2. L'expression "[01]?[0-9][0-9]?" recueille les nombres de 0 à 199 ;) D'abord soit "0" soit "1" une fois ou zero fois (?) suivi de deux chiffres, pouvant aller de 0 à 9 chacun. Si je suis pas clair n'hésite pas à le dire !

Par contre les ":" je ne sais pas trop...
Ca m'a mis la puce à l'oreille, j'aurais dû regarder la regexp avant de poster mon message, ca m'apprendra... Donc en fait l'idée c'est de dire qu'une adresse IP c'est 4 fois le pattern suivant, séparés par des points :

soit "25" suivi d'un chiffre de 0 à 5 (de 250 à 255)
soit "2" suivi d'un chiffre de 0 à 4 suivi d'un chiffre de 0 à 9 (200 à 249)
soit "1" suivi de deux chiffres de 0 à 9 (100 à 199)
soit "0" suivi de deux chiffres de 0 à 9 (000 à 099)

Ca devrait t'éclairer un peu plus je pense...

le ?: en début de parenthèse rend l'expression entre parenthèse non capturante

astuces javascript
Messages postés
579
Date d'inscription
lundi 14 janvier 2002
Statut
Membre
Dernière intervention
17 août 2006
69
En matière d'expressions rationnelles j'encourage tout le monde à d'abord tester son expression sur http://magali.contensin.free.fr/html/JAVASCRIPT/cours/PREDEF/ExpressionsReg.html (enregistrer sous en local fonctionne également)

Ok ok g compris. Merci pour tes explications ca m'a aider.

G enfin réussi a faire le controle de saisie sur cet ip de malheur, g failli laisser tomber.

Enfin bref merci a alex et marmot pour leur aide.

Xeus
Tu peux indiquer ton code pour vérifier l'IP ?
Moi j'aimerai vérifier si le nombre de caractère est valide
mais j'ai pas accès au net a mon taf juste au site ccm
En fait c'est bon j'ai repris le code indiquer :

var regexp = /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/

Merci pour les info
Messages postés
11
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
9 mai 2016
1
//verification regex les date format francais.
essaie mon code var datetest = '19/12/2010';
if (datetest.match('^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$'))
{
alert(1);
}else{
alert(0);
}