使用Javascript(正则表达式)查找不在HTML标记中的文本
我有一个来自DOM元素的字符串,其中包含类似于以下内容的内容:使用Javascript(正则表达式)查找不在HTML标记中的文本,javascript,regex,Javascript,Regex,我有一个来自DOM元素的字符串,其中包含类似于以下内容的内容: <span class='greenhornet'>Can you catch the green?</span> 你能赶上绿灯吗? 我需要知道绿色这个词的位置 在这种情况下,如果我设置了一个模式/green/,JSexec()当然会返回第一个出现的green(位置13) 有没有办法告诉JS regexp忽略绿色这个词,如果它介于和code>之间,或者有更简单的方法吗 哦,我也不能直接去掉HTML 谢谢。
<span class='greenhornet'>Can you catch the green?</span>
你能赶上绿灯吗?
我需要知道绿色这个词的位置
在这种情况下,如果我设置了一个模式/green/
,JSexec()
当然会返回第一个出现的green(位置13)
有没有办法告诉JS regexp忽略
绿色这个词,如果它介于
和code>之间,或者有更简单的方法吗
哦,我也不能直接去掉HTML
谢谢。您可以获得span元素的innerHTML。不需要正则表达式。正如评论员(和用户1883592)所建议的,从HTML中剥离HTML或解析文本是正确的答案。在HTML中使用正则表达式是失败者的游戏;你已经被警告过了 但是,也就是说,如果你真的想玩这个游戏,我首先要确保在你的任期和最后一个任期之间没有开始括号;换言之:
var greenRegex = />[^<]+(green)/;
var position = "<span class='greenhornet'>Can you catch the green?</span>".search(greenRegex);
// position = 25, not 13
var greenRegex=/>[^您可以使用document.getElementsByClassName
例如吗?使用DOM检索所有文本节点,连接文本节点内容,然后进行搜索。这将包括匹配“green hornet”这样的情况,即使按HTML拆分,例如green
hornet。为什么不能删除HTML?