JavaScript替换左括号和右括号

时间:2018-08-28 16:14:33

标签: javascript regex replace

例如,我有一串文字

[text1] [text2] [text3]

我想用“ $ {”替换“ [”字符,用“}”替换“]”字符,但是只有在这种情况下,当“ [”后跟“]”时才可以。

例如

[text1] [[text2] [text3]

应该导致

${text1} [${text2} ${text3}

我该如何在Javascript中使用正则表达式来实现?

我写了这样的东西

someString = someString.replace(/\[/g, "${");
someString = someString.replace(/]/g, "}");

但这不适用于我的问题,只是替换了每个括号。

1 个答案:

答案 0 :(得分:11)

您可以使用

<div class="editcontent">
    <ul class="group">
        <li class="versionicon" style="">Versiebeheer</li>
        <li class="editcontenticon" style="">Edit</li>
    </ul>
</div>

<div class="editwindow" style="border:solid 1px; padding: 1em;">
    <div class="defaulttext">
        <h4>Edit Window</h4>
        <p>Test test test 123</p>
    </div>
</div>

<div class="editwindowhidden" style="border:solid 1px; padding: 1em; background-color: #999;">
    <h2>To be hiddent off screen....</h2>

    <div class="versions" style="">
        <h4>Versions Div</h4>
        <p>Some version info</p>
    </div>

    <div class="admin" style="">
        <h4>Admin Div</h4>
        <p>Some admin info</p>
    </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

详细信息

  • var s = "[text1] [[text2] [text3]"; console.log(s.replace(/\[([^\][]+)]/g, "$${$1}"));-一个\[字符
  • [-第1组:一个negated character class([^\][]+)[以外的任何其他1个以上的chrs匹配(请注意,在JS正则表达式的字符类中,{ {1}} char必须始终转义,即使将其放在否定的类开始处也是如此
  • ]-一个]字符(在字符类之外,]并不特殊,不必进行转义)。

在替换模式中,]代表文字]字符,$$添加一个$字符,{插入第1组的值,然后添加了{