Vérification balise html en javascript avec des regex

Résolu/Fermé
julienbasse
Messages postés
41
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
23 décembre 2014
- Modifié par julienbasse le 7/03/2014 à 12:15
julienbasse
Messages postés
41
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
23 décembre 2014
- 7 mars 2014 à 18:34
Bonjour,
je souhaite actuellement faire une petite vérification d'un formulaire ou l'on doit copier le code d'intégration d'une vidéo, n'étant pas très à l'aise avec les expressions régulières j'ai fais quelques recherches et quelques essais peu concluants ... donc je viens poser mon dilemme en espérant obtenir une petite réponse.
la valeur doit donc commencer par "<iframe" et doit être suivie par plusieurs autres caractères alphanumériques, peu importe le nombre jusqu'a la fin.

j'ai tenté ceci :
if(document.formulaire.urlVidéo.value.search(/^<[iframe]+(.)$/) == -1){
...
}


ou

if(document.coucouv.url.value.search(/^<[iframe]+(.+)?$/) == -1){
...
}

mais bon ça ne marche pas.

j'espère obtenir de l'aide, merci par avance,
julien.

4 réponses

Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
Modifié par Reivax962 le 7/03/2014 à 13:45
Bonjour,

[abc] signifie a ou b ou c. Toi tu voudrais plutôt la chaîne complète iframe. Du coup, pas besoin de t'embêter, mets juste iframe.
< est potentiellement un caractère réservé, cela dépend des langages, en JS je ne l'ai pas en tête. À vérifier.
Ensuite, le « + » derrière iframe signifie « 1 ou plusieurs fois », alors qu'une seule fois est ce que tu recherches.
Je rajoute également un i à la fin pour indiquer que l'expression rationnelle est insensible à la casse (donc iFrame, IFRAME ou iframe fonctionneront)

Essaie donc ça :
(/^<iframe.*$/i)

ou ça, si le premier ne marche pas :
(/^\<iframe.*$/i)

Xavier
0
julienbasse
Messages postés
41
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
23 décembre 2014

7 mars 2014 à 14:52
bonjour, j'ai testé mais ça n'a pas marché peut être que le chevron pose problème, j'ai essayé de mettre un "." devant ça n'a pas marché non plus merci de votre aide en tout cas !
0
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
7 mars 2014 à 15:08
Tu pourrais en dire plus sur le « ça n'a pas marché » ?
Donne la valeur exacte du champ que tu as utilisé, par exemple.
0
julienbasse
Messages postés
41
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
23 décembre 2014

Modifié par julienbasse le 7/03/2014 à 16:51
en fait, je demande dans mon formulaire à copier le code d'intégration de la vidéo Youtube si elle est bonne, la bordure de l'input devra être verte sinon, elle sera noire et pour l'instant elle ressort noire.
Merci pour l'aide en tout cas
fonction :
function verifurlv() {
if(document.coucou.url.value == ""){
document.coucouv.url.style.border = "solid 2px black";

}else{
if(document.coucouv.url.value.search(/^<iframe.*$/i) == -1)
{
 
document.coucouv.url.focus();
document.coucouv.url.style.border = "solid 2px black";
return false;
}
else {
 document.coucouv.url.style.border = "solid 2px lightgreen";
 return true;
 }
}
}


Encore merci pour l'aide !
0
flokocha
Messages postés
1510
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
10 octobre 2015
280
7 mars 2014 à 15:37
Si tu n'es pas trop regardant sur le contenu de la balise en elle-même, tu peux faire quelque chose dans ce genre : /^<iframe[^>]*>.+<\/iframe>$/

Ça te permet de vérifier que la chaine commence bien par <iframe> (avec eventuellement des attributs), qu'elle termine bien par </iframe>, et qu'il y a quelque chose entre les deux.
0
julienbasse
Messages postés
41
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
23 décembre 2014

7 mars 2014 à 16:48
en fait voici la fonction ;
function verifurlv() {
if(document.coucou.url.value == ""){
document.coucouv.url.style.border = "solid 2px black";

}else{
if(document.coucouv.url.value.search( /^<iframe[^>]*>.+<\/iframe>$/ ) == -1)
{
 
document.coucouv.url.focus();
document.coucouv.url.style.border = "solid 2px black";
return false;
}
else {
	document.coucouv.url.style.border = "solid 2px lightgreen";
	return true;
	}
}
}


en fait, je demande dans mon formulaire à copier le code d'intégration de la vidéo Youtube si elle est bonne, la bordure de l'input devra être verte sinon, elle sera noire et pour l'instant elle ressort noire.
Merci pour l'aide en tout cas
0
julienbasse
Messages postés
41
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
23 décembre 2014

7 mars 2014 à 16:53
je dois par exemple voir que
<iframe width="640" height="360" src="//www.youtube.com/embed/..." frameborder="0" allowfullscreen></iframe>

est bonne
0
flokocha
Messages postés
1510
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
10 octobre 2015
280
Modifié par flokocha le 7/03/2014 à 18:03
alors vu qu'il n'y a rien entre <iframe ...> et </iframe>, mais des attributs obligatoires dans la première balise, c'est cette regexp :
/^<iframe [^>]+><\/iframe>$/

Ou /^<iframe [^>]+>.*<\/iframe>$/ si tu tolères qu'il puisse y avoir quelque chose
0
julienbasse
Messages postés
41
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
23 décembre 2014

Modifié par julienbasse le 7/03/2014 à 18:35
super, ça marche, merci beaucoup !
et merci pour les explications, bonne journée !
0