【问题标题】:How to remove square brackets in string using regex?如何使用正则表达式删除字符串中的方括号?
【发布时间】:2010-09-28 11:04:21
【问题描述】:

['abc','xyz'] - 这个字符串我想在 javascript 中使用正则表达式变成abc,xyz。我想用空字符串替换左方括号和单引号,即""

【问题讨论】:

  • 这个字符串是从哪里来的?这是 JSON 还是类似的东西?
  • 方括号可以嵌套吗? ['abc',['def','ghi'],'jkl']如果是,结果应该是什么?
  • 这是 JavaScript 文字吗?你用['ab\'c', 'xy\\z']做什么?

标签: javascript regex


【解决方案1】:

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

/[\[\]']+/g

用空字符串替换。

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

【讨论】:

  • 介意在这里解释正则表达式吗?
  • @Zypps987 [...] 在正则表达式中用于定义一组要匹配的字符,它们是正则表达式“词汇”的一部分。因此,如果要匹配 [] 字符,则需要对它们进行转义,以便将它们解释为简单字符。 + 表示您不想只匹配这个集合一次,而是要匹配整个字符串。如果您想捕获每个 []' 字符,则结果为 /[\[\]']+
  • 字符类中的第一个括号不必转义。正如@ithkuil 建议的那样,只需要(/[[\]]/g,'')
  • 它是为 javascript @adamrowe 编写的
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    给你

    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 对字符串使用双引号,而不是单引号。见:json.org
      【解决方案5】:

      只是在这里提出一个我觉得更具可读性的替代方案。

      /\[|\]/g
      

      JavaScript 实现:

      let reg = /\[|\]/g
      
      str.replace(reg,'')
      

      正如其他人所展示的,您所要做的就是列出 [] 字符,但由于它们是特殊字符,您必须使用 \ 对其进行转义。

      我个人认为使用 [] 的字符组定义令人困惑,因为它使用了您要替换的相同特殊字符。

      因此,使用| (OR) 运算符,您可以更轻松地将正则表达式中的特殊字符与被替换的文字字符区分开来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-07
        • 1970-01-01
        • 2013-08-04
        • 2011-11-07
        • 1970-01-01
        • 2022-11-02
        相关资源
        最近更新 更多