1

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

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

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

不工作

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

不工作

知道我哪里出错了吗?

4

5 回答 5

2

答案是 [ 和 ] 是正则表达式上下文中的特殊字符,因此需要通过 \ 即匹配 ] 进行转义,当您使用方便的 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, ']@[') 
于 2012-11-29T15:19:50.317 回答
1

你的例子不起作用的原因是因为方括号通常代表一个字符类,因此你需要像这样转义它们

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

您还可以使用正则表达式文字

mytext.replace(/\],\[/g, "]@[");
于 2012-11-29T15:16:59.870 回答
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"), "]@["));

于 2012-11-29T15:17:00.557 回答
1

试试这个:-

 mytext.replace(/\],\[/g, ']@[')
于 2012-11-29T15:20:07.213 回答
0
var str = "[1],[2],[3]";

var replaced = str.replace('],[', ']@[');
于 2012-11-29T15:16:53.567 回答