替换regexp $ 1替换

时间:2016-03-20 17:39:01

标签: javascript regex

我正在尝试使用javascript中的.replace()修改子字符串。

基本上我想在比赛前后放置任意文字。

var pattern = new RegExp("<div"+"(.*?)>", "g");

var text = "<div><div class='someClass'>"

text = text.replace(pattern, "<pre>"+"<div>"+ "$1" + ">" +"</pre>")

上面的代码将文字更改为:

"<pre><div>></pre><pre><div> class='someClass'></pre>"

除了额外的“&gt;&gt;”这是正确的,但它在替换函数中很难看。

如何改变我的正则表达式

  1. 不必使用$ 1,因为它不受完全支持according to this

  2. 如何将替换更改为更简单的内容,如

    text = text.replace(pattern, "<pre>"+ "THING_THAT_MATCHED" +"</pre>")
    

1 个答案:

答案 0 :(得分:1)

使用以下代码:

var pattern = new RegExp("<div"+"(.*?)>", "g");

var text = "<div><div class='someClass'>"

text = text.replace(pattern, function(match, first_match) {
    return "<pre>"+"<div>"+ first_match + ">" +"</pre>"
})

另请注意,您的代码会使原始代码更加整洁,如下所示:

var pattern = new RegExp("<div"+"(.*?)>", "g");

var text = "<div><div class='someClass'>"

text = text.replace(pattern, "<pre><div>$1></pre>")