无法在Javascript

时间:2015-04-22 11:05:57

标签: javascript

我有一个像这样的字符串“[[String1]],[[String2]],[[String3]]”。我需要删除所有方括号。为此我在Javascript中使用了replace函数。

var str = "[[String1]],[[String2]],[[String3]]";
var str1 = str.replace(/[[/g,''); //not working
var str2 = str1.replace(/]]/g,''); //working

任何人都可以帮我解决这个问题。

6 个答案:

答案 0 :(得分:4)

在正则表达式中,[具有特殊含义(它会启动"字符类"您可以说[abc],其匹配a,{ {1}}或b)。

为了使它不特别,在它前面放一个反斜杠以逃避它:



c

var str = "[[String1]],[[String2]],[[String3]]";
var str1 = str.replace(/\[\[/g,'');
var str2 = str1.replace(/]]/g,'');
snippet.log("str = " + str);
snippet.log("str1 = " + str1);
snippet.log("str2 = " + str2);




事实上,角色类可以在这里提供帮助,因为你想要替换<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>[,所以:

&#13;
&#13;
]
&#13;
var str = "[[String1]],[[String2]],[[String3]]";
var str1 = str.replace(/[\[\]]/g,'');
snippet.log("str = " + str);
snippet.log("str1 = " + str1);
&#13;
&#13;
&#13;

在正则表达式<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>中,第一个/[\[\]]/g和最后一个[标记字符类,内部的]\[是文字字符\][。 (你在技术上不需要逃离} 角色类,但我不得不承认我倾向于......我不知道...... .clarity。)

答案 1 :(得分:1)

\之前添加[

&#13;
&#13;
var str  = "[[String1]],[[String2]],[[String3]]";
var str1 = str.replace(/\[\[/g,'');
console.log(str1);
&#13;
&#13;
&#13;

您需要转义[,因为[special char

答案 2 :(得分:0)

var str  = "[[String1]],[[String2]],[[String3]]";
var str1 = str.replace(/\[\[/g,'').replace(/\]\]/g,'');
alert(str1);  

Demo

答案 3 :(得分:0)

在正则表达式中,[ - 字符表示可以匹配该组中任何字符的字符组的开头。您需要使用反斜杠[转义\[

var str = "[[String1]],[[String2]],[[String3]]"; var str1 = str.replace(/\[/g,'');

答案 4 :(得分:0)

如果要删除打开和关闭方括号,可以试试这个

"[[String1]],[[String2]],[[String3]]".replace(/\[|\]/g, "")

方括号用于字符类[],如果要匹配它,则必须使用模式中的反斜杠对其进行转义。管道|正在说或者,所以匹配空方括号或右括号。

答案 5 :(得分:0)

您需要在[ ]之前添加\,因为它们是正则表达式中的特殊字符。在您的情况下,您要删除字符串中的所有方括号。这意味着你需要全部捕获它们。为此,您需要定义一组这些字符。

在正则表达式[]中定义要捕获的一组字符。在您的情况下,您想要捕获[],因为它们是特殊字符,您首先需要将它们转义。

所以你想要的是:

var str  = "[[String1]],[[String2]],[[String3]]";
var str1 = str.replace(/[\[\]]/g,'');
console.log(str1);