这可能是一个菜鸟问题,但我试图在这里和其他网站上找到答案,我仍然没有找到答案。至少不是这样,我理解足以解决问题。
这用于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中将其作为用户脚本安装时,它找不到该模式。
我无法弄清楚如何解决这个问题。
答案 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更可能不包含您认为包含的内容。