我有一个字符串,其中包含],[
要替换的多次出现的字符串]@[
无论我尝试什么,我都无法做到正确。
var find = '],[';
var regex = new RegExp(find, "g");
mytext.replace(regex, ']@[')
不工作
mytext = mytext.replace(/],[/g,']@[');
不工作
知道我哪里出错了吗?
我有一个字符串,其中包含],[
要替换的多次出现的字符串]@[
无论我尝试什么,我都无法做到正确。
var find = '],[';
var regex = new RegExp(find, "g");
mytext.replace(regex, ']@[')
不工作
mytext = mytext.replace(/],[/g,']@[');
不工作
知道我哪里出错了吗?
答案是 [ 和 ] 是正则表达式上下文中的特殊字符,因此需要通过 \ 即匹配 ] 进行转义,当您使用方便的 Javascript 简写正则表达式时,您可以在其中找到下面的代码:
var regex= /\],\[/g
var result = mytext.replace(regex, ']@[')
请查看以下 jsFiddle:http: //jsfiddle.net/JspRR/4/
如您所见,重要的一点是在构造正则表达式时转义 ] 和 [。
现在,如果您不想使用 Javascript 正则表达式速记,您仍然需要进行相同的转义。但是,在这种情况下, \ 字符将需要自行转义( ... 自行转义!)
var regex = new RegExp("\\],\\[", "g");
var result = mytext.replace(regex, ']@[')
你的例子不起作用的原因是因为方括号通常代表一个字符类,因此你需要像这样转义它们
var find = '\\],\\[';
var regex = new RegExp(find, "g");
mytext.replace(regex, ']@[')
您还可以使用正则表达式文字
mytext.replace(/\],\[/g, "]@[");
方括号是正则表达式中的特殊字符:它们用于定义字符集。
如果要匹配正则表达式中的方括号,则必须使用反斜杠对其进行转义。
"[1],[2],[3]".replace(/\],\[/g, "]@[");
或者,如果您使用内置构造函数:
"[1],[2],[3]".replace(new RegExp("\\],\\[", "g"), "]@[");
在这两种情况下,我们都必须使用该g
标志,以便正则表达式可以匹配所有出现的搜索字符串。
var str = "[1],[2],[3]";
console.log(str.replace(/\],\[/g, "]@["));
console.log(str.replace(new RegExp("\\],\\[", "g"), "]@["));
试试这个:-
mytext.replace(/\],\[/g, ']@[')
var str = "[1],[2],[3]";
var replaced = str.replace('],[', ']@[');