使用Javascript(正则表达式)查找不在HTML标记内的文本

时间:2012-12-19 19:41:51

标签: javascript regex

我有一个来自DOM元素的字符串,其中包含类似于以下内容的内容:

<span class='greenhornet'>Can you catch the green?</span>

我需要知道绿色这个词的位置。

在这种情况下,如果我设置模式/green/,JS exec()当然会返回第一次出现的绿色(位置13)。

有没有办法告诉JS正则表达式忽略!单词绿色,如果它在<>之间,或者是否更方便这样做?

哦,我也不能剥离HTML!

感谢。

2 个答案:

答案 0 :(得分:2)

正如评论员(和用户1883592)所建议的那样,剥离HTML或从HTML解析文本是正确的答案。使用带有HTML的正则表达式是一个失败者的游戏;你被警告了。

但是,话虽这么说,如果你真的想玩这个游戏,我首先要确保你的任期和最后一个结束时间之间没有开头括号;换句话说:

var greenRegex = />[^<]+(green)/;
var position = "<span class='greenhornet'>Can you catch the green?</span>".search(greenRegex);
// position = 25, not 13

答案 1 :(得分:0)

您可以获取span元素的innerHTML。不需要正则表达式。