chrome的用户脚本中的正则表达式问题

时间:2011-02-18 22:02:09

标签: javascript regex google-chrome-extension userscripts

这可能是一个菜鸟问题,但我试图在这里和其他网站上找到答案,我仍然没有找到答案。至少不是这样,我理解足以解决问题。

这用于chrome的用户脚本。

我正在尝试从字符串中选择日期。该字符串是我已设法选择的标记的innerHTML。 html结构以及字符串是这样的:(div是选定的标记,因此其中的所有内容都是字符串的内容)

<div id="the_selected_tag">  
    <a href="http://www.something.com"  title="something xxx">link</a>  
    " 2011-02-18 23:02"  
    <a href="http://www.somthingelse.com" title="another link">thing</a>
</div>

如果你有一个解决方案可以帮我选择没有这个模糊的日期,那也很棒。

javascript:

var pattern = /\"\s[\d\s:-]*\"/i;
var tag = document.querySelector('div.the_selected_tag');
var date_str = tag.innerHTML.match(pattern)[0]

当我在html文档上使用此脚本作为普通javascript进行测试时,它可以正常工作,但是当我在chrome中将其作为用户脚本安装时,它找不到该模式。

我无法弄清楚如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

将innerHTML转储到控制台中。如果它看起来很好,那么开始从更通用(/\d+/)到更具体的构建regexp并将所有内容输出到控制台。在不同的编码中有许多不同的引号字符,许多不同类型的破折号。

[\d\s:-]*不是一个很好的选择,因为它匹配" 1"" "。我宁愿写一些尽可能具体的东西:

/" \d{4}-\d{2}-\d{2} \d{2}:\d{2}"/

(同样document.querySelector('div.the_selected_tag')会在您的示例中返回null,但您可能希望编写class而不是id

答案 1 :(得分:1)

tag.innerHTML更可能不包含您认为包含的内容。