Javascript替换,用逗号字符串

时间:2012-11-29 15:15:20

标签: javascript replace

我有一个包含],[多次出现的字符串,我想用]@[替换

无论我尝试什么,我都无法做到。

    var find = '],[';
    var regex = new RegExp(find, "g");
    mytext.replace(regex, ']@[')

不起作用

   mytext = mytext.replace(/],[/g,']@[');

不起作用

知道我哪里错了吗?

5 个答案:

答案 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('],[', ']@[');