我有这个字符串:
<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
如何取消此匹配并插入单词open?
提前致谢
最佳答案
首先:不要使用正则表达式来解析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);
这将搜索您的单词,后跟除
>
以外的所有内容,然后搜索<
。该解决方案不是最好的解决方案,但您不能期望正则表达式执行它原本不适合的工作。