Les Allergies
Alimentaires
Posez votre question Signaler

Fonction Match() en javascript

Xeus - Dernière réponse le 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
Lire la suite 

Fonction Match() en javascript »

11 réponses
Réponse
+1
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
alex - 26 janv. 2005 à 18:36
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...
alex - 26 janv. 2005 à 18:40
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...
petitchevalroux - 21 déc. 2010 à 18:38
le ?: en début de parenthèse rend l'expression entre parenthèse non capturante

astuces javascript
Ajouter un commentaire
Réponse
+0
moins plus
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)

Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
//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);
}
Ajouter un commentaire
Ce document intitulé « Fonction Match() en javascript » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?