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