我有这个字符串:

<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);


这将搜索您的单词,后跟除>以外的所有内容,然后搜索<。该解决方案不是最好的解决方案,但您不能期望正则表达式执行它原本不适合的工作。

08-24 20:07