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

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

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

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

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

有没有办法告诉JS regexp忽略!单词green,如果它在 或者有更简单的方法吗?

哦,我也不能剥离HTML!

谢谢.

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

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

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