如何将字符串的一部分与jQuery匹配?

时间:2010-11-02 11:56:09

标签: jquery

说有像

这样的字符串
  

“... width = 600 height = 1200 ......”。

我希望在"width="之后和" "之前获取字符串,即600

我该怎么做?

3 个答案:

答案 0 :(得分:13)

使用带有match()功能的正则表达式:

var str = "... width=600 height=1200 ...",
    width = str.match(/\bwidth=(\d+)/);

if (width)
    alert(width[1]); 
    //-> 600

提供的正则表达式查找单词边界(\b),后跟文字字符串width=,后跟一个或多个数字,这些数字也被捕获为子表达式({{1 }})。此子表达式捕获将添加到match返回的数组中。

答案 1 :(得分:3)

您可以使用正则表达式来解析它:

var matches = "... width=600 height=1200 ...".match(/width=(\d+)/);
if (matches) {
    alert(matches[1]);
}

但是,您应该考虑发布更多信息。您可能正在尝试解决可以避免的问题,就像评论中所述的其他问题一样。

答案 2 :(得分:2)

我同意寂寞的一句话,因为如果你能给我们更多的背景,感觉就像这里有一个更好的解决方案,但是说,我会给我两分钱。

您可以尝试这样的事情:

var str = "width=600 height=1200";
$('<div ' + str + '>').attr('width');

这意味着您正在利用HTML解析器从字符串中获得合理的结果。


使用您在OP评论中发布的信息进行更新:

您想要检查此字符串的width属性:

<DIV><EMBED 
    height=311 type=application/x-shockwave-flash
    width=700 src=http://www.youtube.com/v/0O2Rq4HJBxw
    allowfullscreen="true" allowscriptaccess="always"
    wmode="transparent">
</EMBED></DIV>

在这种情况下,我实际上强烈建议使用上述方法。

var str = "<DIV><EMBED height ... etc";
$(str).find('embed').attr('width');

我将为您保存“不要使用正则表达式解析HTML”rant / freakout答案的强制性链接,但它绝对适用于此。