JavaScript正则表达式:除了此模式之间的内容之外,请提供所有内容

JavaScript正则表达式:除了此模式之间的内容之外,请提供所有内容,javascript,regex,Javascript,Regex,我有一个变量,它以字符串值的形式包含页面的整个html: <html><head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> <script src="foo.js"></script>

我有一个变量,它以字符串值的形式包含页面的整个html:

<html><head>
        <meta charset="utf-8">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        <script src="foo.js"></script>
        <link rel="stylesheet" href="foo.css">
    </head>
    <body>
        <div id="wrapper">

            <!-- MY PANEL -->

            <div id="edit-area"></div>

            <div id="my-panel">
                <ul class="menu menu-top">
                    <li>a</li>
                    <li>b</li>
                    <li>c</li>
                </ul>
                <ul class="menu menu-bottom">
                    <li>a</li>
                </ul>
                <pre id="code" contenteditable="true"></pre>
            </div>

            <!-- END MY PANEL -->

            <div id="original-content">

                <div style="border: 1px solid red; width: 100px; height: 100px"></div>

            </div>


        </div>

</body></html>

  • a
  • b
  • c
  • a
我需要将此值更改为除注释之间的内容以外的所有内容。我只需要这个:

<html><head>
        <meta charset="utf-8">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        <script src="foo.js"></script>
        <link rel="stylesheet" href="foo.css">
    </head>
    <body>
        <div id="wrapper">


            <div id="original-content">

                <div style="border: 1px solid red; width: 100px; height: 100px"></div>

            </div>

        </div>

</body></html>

我试过这个:

var regex = /<!-- MY PANEL -->.+?<!-- END MY PANEL -->/;
alert(my_variable.replace(regex, ''));
var regex=/.+?/;
警报(my_变量.replace(regex.);
但它只是提醒整个值,注释之间的内容保持不变,而不是删除

实现这一点的正确方法是什么?

result=subject.replace(/[\s\s]+?/g,”);
result = subject.replace(/<!-- MY PANEL -->[\s\S]+?<!-- END MY PANEL -->/g, "");

如果您需要更多帮助,请告诉我们。

将永远不会匹配换行符。您必须使用与所有内容匹配的其他模式,例如
(.|[\r\n])*?
[\s]*?

与换行符不匹配,并且JavaScript不像PHP那样具有“dotall”选项

要解决这个问题,请使用一个完整的字符类,例如
[\d\d]
来表示“任何数字或任何非数字”,而不是

结果:
regex=/[\d\d]+?/

根据这个regExr(),它可以:

<!-- MY PANEL -->(\s*.*?)*<!-- END MY PANEL -->
(\s**?)*

但正如正则表达式一样,这可能不是最甜蜜的。

这将用空字符串替换开头和结尾的注释,它仍然保留了其中的所有内容。我不仅希望删除开头和结尾的评论,还希望删除其范围内的所有内容。正如Kevin所说,\s\s是javascript强加给您的肮脏伎俩