首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery和regex匹配项目列表中的多个匹配项

使用jquery和regex匹配项目列表中的多个匹配项
EN

Stack Overflow用户
提问于 2012-01-07 01:25:53
回答 1查看 635关注 0票数 1

这是我的第一个问题。这让我困惑了两天。我有一个项目列表,我需要获取包含此模式MM/DD/YYYY... http://www.someurl.com的所有匹配。我正在使用jquery,下面是我现在所拥有的。它只会报警一次,而我预计它会报警3次。

代码语言:javascript
复制
$('#news').parent().find('td').children('span.srNewsBlurb').each(function() {
    var html = $(this).html();
    if(/(0?[1-9]|1[012])\/(0?[1-9]|[12][0-9]|3[01])\/(.*http.*)/i.test(html)){ 
        alert('this works');
    }
});

以下是内容。

玩具反斗城( Toys R Us )圣诞节前夕(68%) 1/05/2012 --纽约(http://www.thestreet.com/story/11353279/1/toys-r-us-open-through-christmas-eve.html) --是时候挤出更多午夜购物的时间了。类似的结果Jeanine Skowronski

2011年新增就业最多的城市(68%) 1/05/2012-纽约(http://www.thestreet.com/story/11351046/1/cities-adding-the-most-jobs-in-2011.html) --美国大部分地区仍在等待经济复苏来提振当地就业市场,但在圣安东尼奥,似乎经济衰退从未出现过类似的结果赛斯·费格曼

美国国会支持率创历史新低(68%) 1/05/2012 --纽约(http://www.thestreet.com/story/11353209/1/congress-approval-rating-hits-all-time-low.html) --就在情况似乎不能再糟的时候,国会的支持率又创新低。类似的结果Seth Fiegerman

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-07 02:11:14

我会进行一点代码重组:find/ would构造非常笨拙,我会重新标记我的HTML,这样就不需要在父结构中来回走动了。也就是说,我怀疑你的问题是RegExp的基本问题之一,因为这对我来说很有效:

代码语言:javascript
复制
var matcher = /(0?\d|1[012])\/(0?\d|[12]\d|3[01])((.|\s)*)/i;
$('#news').parent().find('td').children('span.srNewsBlurb').each(function(i,o) {
    rg = matcher.exec($(o).html())
    if (rg) {
        console.log(rg[1], rg[2], rg[3])
    }
});

看到正则表达式末尾的((.|\s)*)结构了吗?Javascript正则表达式很奇怪,因为它们通过\s操作符匹配回车符/换行符,而不是.操作符。因此,如果HTML中包含原始换行符,则需要使用此表达式。此外,只需构建一次正则表达式,然后反复使用它,比每次交互都重新调用regexp构造函数要高效得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8761823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档