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.
A voir également:

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 011
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 011
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