我正在尝试使用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,因为它不受完全支持according to this
如何将替换更改为更简单的内容,如
text = text.replace(pattern, "<pre>"+ "THING_THAT_MATCHED" +"</pre>")
答案 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>")