我有这个字符串:
<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
如何否定此匹配并插入单词?
提前致谢
答案 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);
这将搜索您的字词,然后搜索除>
之外的任何内容,然后搜索<
。这个解决方案并不是最好的,但你不能指望正则表达式做一些不是为它设计的东西。