正则表达式读取HTML并仅匹配文本中的特定单词

时间:2015-02-08 16:58:28

标签: javascript regex

我有这个字符串:

<body>
    <span class="open crack-opener o_open i_opens ng-open" style='open'>Open opens openes "Open opens openes" clopened</span>
</body>

我只需在文本中选择单词OPEN或OPENS或OPENES。我尝试了以下RegExp,但它只选择了标签。我需要否定这一点并选择单词。

/(<\/?\w+((\s+\w+(\s*=\s*(?:\".*?"|'.*?'|[^'\">\s]+))?)+\s*|\s*)?>)/ig

如何否定此匹配并插入单词?

提前致谢

1 个答案:

答案 0 :(得分:2)

首先:不要使用正则表达式来解析HTML,这不是一个好主意,因为无法构建正则表达式解析HTML:)

但回到你的问题:

var str="<body><span class=\"open crack-opener o_open i_opens ng-open\" style='open'>Open opens openes \"Open opens openes\" clopened</span></body>";
var words=str.match(/(\bopen\b|\bopens\b|\bopenes\b)(?=[^>]*<)/ig);

这将搜索您的字词,然后搜索除>之外的任何内容,然后搜索<。这个解决方案并不是最好的,但你不能指望正则表达式做一些不是为它设计的东西。