javascript - 仅删除特定值的引号

标签 javascript regex

我正在为 webpack 编写一个简单的加载器,最后一步我需要删除该函数的双引号。请参阅下面的示例:

我得到的字符串如下所示:

`export default {
  mykey:
  [
    {
      valueString: "string",
      removeQuotesForValue: "() => import(/* webpackChunkName: 'a' */ 'pathToA')"
    },
    {
      valueString: "someOtherString",
      removeQuotesForValue: "() => import(/* webpackChunkName: 'b' */ 'pathToB')"
    }
  ]
}`

我需要删除导入函数的双引号才能得到:

`export default {
  mykey:
  [
    {
      valueString: "string",
      removeQuotesForValue: () => import(/* webpackChunkName: 'a' */ 'pathToA')
    },
    {
      valueString: "someOtherString",
      removeQuotesForValue: () => import(/* webpackChunkName: 'b' */ 'pathToB')
    }
  ]
}`

如果我知道 key removeQuotesForValue 是否可以使用 JavaScript 正则表达式来实现此目的永远不会改变?

最佳答案

通常,强烈建议不要使用正则表达式处理源代码。但是,如果您可以信赖 removeQuotesForValue 这个词,您可以选择:

(removeQuotesForValue[^\n"]+)"([^\n"]+)"

JavaScript 中:

let source = `export default {
  mykey:
  [
    {
      valueString: "string",
      removeQuotesForValue: "() => import(/* webpackChunkName: 'a' */ 'pathToA')"
    },
    {
      valueString: "someOtherString",
      removeQuotesForValue: "() => import(/* webpackChunkName: 'b' */ 'pathToB')"
    }
  ]
}`;

let regex = /(removeQuotesForValue[^\n"]+)"([^\n"]+)"/g;

source = source.replace(regex, "$1$2");
console.log(source);

参见a demo on regex101.com .

关于javascript - 仅删除特定值的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54822537/

相关文章:

javascript - 计算 gif 重播次数

regex - 使用正则表达式从目录中提取数据

regex - 检查字符串是否包含数字或者是数字 - Thymeleaf

javascript - 为什么是 'self'?

javascript - 如何检查用户机器上预装的应用程序?

Javascript 不匹配用引号括起来的 str

regex - Perl 匹配正则表达式的哪些细微差别会引起头痛?

javascript - 对于这种特定情况 : replace .,如何使用 JavaScript 替换字符串中的所有字符 by _

javascript - Function.prototype.call 分配给变量时的意外行为

javascript - 在 Bootstrap 的 Typeahead 中添加标签、值和图片