【问题标题】:Replace standalone string with regex in Javascript在Javascript中用正则表达式替换独立字符串
【发布时间】:2019-07-09 21:17:28
【问题描述】:

我正在尝试编写一个函数来替换任何独立的匹配字符集。例如:

var myarray = ["this is", "this is iss"]
var my2array = []
var regex = '/bis/b'

for (const i of myarray) {
  var x = i.replace(regex, "")
  my2array.push(x)
}

console.log(my2array)

我想要的输出是:

["this", "this iss"]

我在 Python 中得到了这个工作,但无法将它正确地翻译成 Javascript。目前我的输出只是数组值[0][1](不知道为什么 Javascript 会这样做)。

无论如何,我的问题是,如何在 Javascript 中使用正则表达式实现所需的输出?

【问题讨论】:

  • 您正在迭代数组索引,而不是数组值。
  • 我的错误,已修复(已编辑)。主要问题仍然存在。
  • 你的字符串都不包含bis,你为什么希望它替换任何东西?
  • 应该是var regex = /\bis\b/ 你打错了斜杠。
  • /b 是用于测试空格的正则表达式运算符,对吗?

标签: javascript arrays regex


【解决方案1】:

您误解了正则表达式的语法(正斜杠表示表达式的开始和结束,反斜杠用于各种字符以表示某些字符集)。您可以用以下内容替换您的正则表达式,因为我认为您希望您的正则表达式在任一侧用 word boundaries 替换“is”实例:

var regex = /\bis\b/

【讨论】:

    【解决方案2】:

    @benvc 的答案很接近,但在替换后会留下额外的空格,因此与所需的输出不匹配。

    您可以改用两种模式的交替,一种用于处理is 两边都有空格的场景(在这种情况下,您可以使用正向前瞻模式来避免匹配最后一个空格以允许在替换后的单词),另一个处理仅在is 一侧有空格或根本没有空格的场景:

    var myarray = ["this is", "this is iss", "is this", "is"]
    var my2array = []
    var regex = /\s+is\s*(?=\s)|\s*\bis\b\s*/
    
    for (const i of myarray) {
      var x = i.replace(regex, "")
      my2array.push(x)
    }
    
    console.log(my2array)

    【讨论】:

      【解决方案3】:

      这不是解决方案,而是一个工作示例:

      var myarray = ["this is", "this is iss"];
      var my2array = [];
      var regex = /is/g;
      
      for (const i in myarray) {
        var x = myarray[i].replace(regex, "")
        my2array.push(x)
      }
      
      console.log(my2array)

      【讨论】:

      • 得到这个:错误:无法读取未定义的属性“替换”
      • @find_all 此答案是在您将in 更改为of 之前编写的。
      • 这不会产生所需的输出,因为您没有匹配单词边界。
      • 是的,这里只是给出一个使用正则表达式的工作示例
      • 谢谢你,虽然这是我之前得到的输出,使用不带正则表达式的替换。 Barmar 是正确的,因为我专门寻找要替换的独立字符串。
      猜你喜欢
      • 2011-02-17
      • 2013-01-21
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 2015-11-30
      • 2021-11-29
      相关资源
      最近更新 更多