2010-04-19 7 views
-1

J'ai l'expression régulière suivante fonctionnant très bien dans le concepteur d'expressions rationnelles Rad Software.Problème avec la capture nommée en Javascript Expression régulière

param\s+name\s*=\s*"movie"\s+value=\s*"(?<target>.*?)" 

Et maintenant je me demande comment faire fonctionner ceci en JavaScript. Il continue à se plaindre de la partie "cible". J'essaie de valider et d'obtenir l'URL du code embed youtube.

<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/ueZP6ifzqMY&hl=sv_SE&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ueZP6ifzqMY&hl=sv_SE&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object> 

Comment diable puis-je obtenir cette regex pour travailler avec mon javascript?

+7

Voici une réponse qui suggère d'éviter d'utiliser javascript pour l'analyse HTML: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

Répondre

3

Javascript n'a pas de nom de capture. Utilisez

param\s+name\s*=\s*"movie"\s+value=\s*"(.*?)" 
3

Si vous avez déjà un cadre JS comme jQuery dans votre site Web, je recommande de l'utiliser au lieu d'expressions régulières:

var movieUrl = $(your_html).find("object param[name=movie]").attr("value"); 
// "http://www.youtube.com/v/ueZP6ifzqMY&hl=sv_SE&fs=1&rel=0" 

Il y a des façons de faire quelque chose de similaire avec JavaScript pur DOM (si vous n'avez pas de cadre), aussi. Ils génèrent légèrement plus de code que regex, mais sont plus faciles à maintenir et moins susceptibles d'échouer.

+0

Merci, je vais essayer. Pas aussi fiable qu'une réglementation, mais cela fait l'affaire. – jinxen

+1

@user: "pas aussi sûr que les expressions régulières" m'a fait rire. C'est ca. 1000 fois plus fiable que les expressions régulières. Au moins. Vous voudrez peut-être vérifier en réalité * juste combien * les expressions régulières ne peuvent pas gérer le HTML. – Tomalak

+0

Peut-être donc, pas besoin d'être grossier :) Merci pour la réponse si. – jinxen

Questions connexes