如何使用正则表达式从字符串中删除方括号?

52

['abc','xyz'] - 我想用 JavaScript 正则表达式将此字符串转换为 abc,xyz。 我想用空字符串替换方括号和单引号,即""


这个字符串来自哪里?这是JSON还是类似的东西? - Gumbo
方括号可以嵌套吗?['abc',['def','ghi'],'jkl'] 如果可以,结果应该是什么? - Mark Byers
2
这是一个 JavaScript 字面量吗?你会如何处理 ['ab\'c', 'xy\\z'] - bobince
6个回答

100

使用此正则表达式匹配方括号或单引号:

/[\[\]']+/g

替换为空字符串。

console.log("['abc','xyz']".replace(/[\[\]']+/g,''));


能否解释一下这里使用的正则表达式? - Zypps987
3
在正则表达式中,[...] 用于定义一个匹配字符集合,它们是正则表达式的一部分。因此,如果你想要匹配 [] 这两个字符,你需要对它们进行转义,使之被解释为普通字符。+ 表示你不仅想匹配这个字符集合一次,而是要匹配整个字符串。所以,如果你想匹配每个 []' 字符,结果就是 /[\[\]']+ - Carrm
2
字符类中的第一个括号不必转义。只需要 (/[[\]]/g,''),如下面的 @ithkuil 建议的那样。 - adam rowe
它是为JavaScript编写的 @adamrowe - user41855

21

str.replace(/[[\]]/g,'')


14

这里是你需要的

var str = "['abc',['def','ghi'],'jkl']";
//'[\'abc\',[\'def\',\'ghi\'],\'jkl\']'
str.replace(/[\[\]']/g,'' );
//'abc,def,ghi,jkl'

4

您可能甚至不需要字符串替换。如果您的原始字符串是JSON格式,请尝试:

js> a="['abc','xyz']"
['abc','xyz']
js> eval(a).join(",")
abc,xyz

当然要小心使用eval


它不是JSON,因为JSON使用双引号表示字符串,而不是单引号。请参见:http://www.json.org/ - Mark Byers

2

这应该对你有用。

str.replace(/[[\]]/g, "");

0

我只是在这里提出一个我认为更易读的替代方案。

/\[|\]/g

JavaScript 实现:

let reg = /\[|\]/g

str.replace(reg,'')

就像其他人展示的那样,你所要做的就是列出[]字符,但由于它们是特殊字符,你必须用\进行转义。

个人认为使用[]定义字符组有些令人困惑,因为它使用了你试图替换的相同特殊字符。

因此,使用|(或)运算符,你可以更容易地区分正则表达式中的特殊字符和被替换的字面字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接