Javascript正则表达式中命名捕获的问题

时间:2010-04-19 08:41:00

标签: javascript regex

我在Rad Software正则表达式设计器中使用了以下正则表达式。

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

现在我想知道如何在JavaScript中使用它。它继续抱怨“目标”部分。我正在尝试验证并从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>

我怎么能让这个正则表达式使用我的javascript?

2 个答案:

答案 0 :(得分:3)

Javascript没有命名捕获。使用

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

答案 1 :(得分:3)

如果您的网站中已经有像jQuery这样的JS框架,我建议使用它而不是正则表达式:

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

有很多方法可以使用纯DOM JavaScript(如果你没有框架)做类似的事情。它们导致代码比正则表达式略多,但更容易维护,不太可能失败。