Javascript 正则表达式在执行后返回null?

Javascript 正则表达式在执行后返回null?,javascript,html,regex,Javascript,Html,Regex,我试图使用RegExr删除按钮周围的包装,但它返回空值 我使用了问题的解决方案,如下所示: var title = $( ".redButton" ).text(); var myString = $( "#content" ).html(); var myRegexp = /(<p>\s<button class"redButton">)((?:\s|.{1,50})*)(<.button>\s<.p>)/g; var match = myReg

我试图使用RegExr删除按钮周围的包装,但它返回空值

我使用了问题的解决方案,如下所示:

var title = $( ".redButton" ).text();
var myString = $( "#content" ).html();
var myRegexp = /(<p>\s<button class"redButton">)((?:\s|.{1,50})*)(<.button>\s<.p>)/g;
var match = myRegexp.exec(myString);

console.log(match);
因此,我最终可以扭转这一局面:

<article id="content">
    <p>
        <button class="redButton">EEN HELE LANG TITEL IN EEN KNOP</button>
    </p>
</article>
为此:

<article id="content">
        <button class="redButton">LONG TITLE IN A BUTTON</button>
</article>
在我继续之前,我想检查正则表达式是否有效,但它显然不起作用。这个解决方案可以通过使用逃逸来解决问题,但我不明白什么时候该逃逸,什么时候不该逃逸


有人能帮忙吗?

正则表达式和HTML通常不能很好地协同工作。为什么不改用DOMParser呢?将字符串解析为文档,将按钮附加到文章中,然后删除p:

常量htmlStr=` 伊恩·赫勒·朗蒂尔在伊恩·诺普

`; const doc=new DOMParser.parseFromStringhtmlStr,'text/html'; const button=doc.querySelector'.redButton'; const parentoremove=button.parentElement; const-ancestorToAppendTo=parentToRemove.parentElement; 取消存储到AppendTo.appendChildbutton; parentoreve.remove;
console.logdoc.body.innerHTML 如果只想删除元素的直接父元素,请使用jQuery方法。运行代码段,然后检查devtools中的按钮,您将看到段落标记已被删除

const$button=$'content.redButton'; $button.unwrap; 伊恩·赫勒·朗蒂尔在伊恩·诺普


规则1,不要使用正则表达式解析HTML。。。规则2,如果您真的需要使用正则表达式解析HTML,请参见规则1您使用的是JavaScript,因此只需使用DOM与HTML交互即可。对于这类问题,正则表达式是一个糟糕的解决方案。可能是“不知道”的重复。它实际上做了我想要的,但更容易。非常感谢。