js正则表达式替换带中括号的内容

例如如下内容
内容内容内[em123]容内容[em567]内容内容
用正则表达式替换为:
内容内容内em123.jpg容内容em567.jpg内容内容

var str = "内容内容内[em123]容内容[em567]内容内容"
var reg = new RegExp('\[em(.+?)\]',"g");
var ss = str .replace(reg,"em$1.jpg");
结果不行,哪里错了呢?

可以参考下面的代码:

str = "内容内容内[em123]容内容[em567]内容内容"

reg = new RegExp('\\[em(.+?)\\]',"g");

//reg = /\[em(.+?)\]/g

ss =  str .replace(reg,"em$1.jpg");

扩展资料:

正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

一个正则表达式看上去就是一个普通的查找串。

例如,正则表达式"testing"中没有包含任何元字符,它可以匹配"testing"和"testing123"等字符串,但是不能匹配"Testing"。

参考资料来源:百度百科-正则表达式

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16

new RegExp时要把转义符转义了, 你少转一次义

str = "内容内容内[em123]容内容[em567]内容内容"
reg = new RegExp('\\[em(.+?)\\]',"g");
//reg = /\[em(.+?)\]/g
ss =  str .replace(reg,"em$1.jpg");

追问

测试OK!new RegExp时为什么要把转义符转义?也就是为什么要转义2次?
而用双斜杠:reg = /\[em(.+?)\]/g 只要转义一次即可?

本回答被提问者和网友采纳
相似回答