Fonction Match() en javascript

Fermé
Xeus - 25 janv. 2005 à 17:19
 petitchevalroux - 21 déc. 2010 à 18:38
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
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
0
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
0
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...
0
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...
0
petitchevalroux
21 déc. 2010 à 18:38
le ?: en début de parenthèse rend l'expression entre parenthèse non capturante

astuces javascript
0
Marmot Messages postés 579 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 17 août 2006 69
26 janv. 2005 à 12:04
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)

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
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
0
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
0
brahimhackman Messages postés 11 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 9 mai 2016 1
12 oct. 2010 à 14:41
//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);
}
0