javascript - 用于替换引号内字符的正则表达式

标签 javascript regex

我有两个测试字符串:

1+":"+2:xyz
1+"a:fb"+2:xyz

我正在尝试替换引号之间的 :。

我试过这个:

(".*):(.*")

替换为:

$1Q$2

但我最终得到了这个:

1+"Q"+2:xyz
1+"Q"+2:xyz

但我想结束这个:

1+"Q"+2:xyz
1+"aQfb"+2:xyz

有人可以帮帮我吗?必须使用 Javascript。

编辑:

我已经将我的测试工具切换到一个可以正常工作的工具(即直接在浏览器中使用 javascript 执行)。

这现在有效:

var str = '1+"a:fb"+2:xyz';
var res = str.replace(/(".*):(.*")/g, "$1Q$2");

但是如果我有两个 : 在两组引号中怎么办,就像这样:

1+"a:fb"+2+":"

我现在得到这个结果:

1+"a:fb"+2+"Q":xyz

最佳答案

实际上,您正在尝试替换由三部分组成的模式:

  1. " 开头且既不包含 " 也不包含 的位:
  2. 一个:
  3. 既不包含 " 也不包含 : 并以 " 结尾的位

所以表达式看起来像:

("[^:"]*):([^:"]*")

$1Q$2 代替

1+"Q"+2:xyz
1+"aQfb"+2:xyz

你的没有正常工作的原因在于greedy matching .

关于javascript - 用于替换引号内字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870004/

相关文章:

javascript - RegEx 替换为在主题字符串中找到的值

javascript - 数组中的 Google 电子表格

正则表达式整个字符串的确切长度

javascript - 如何通过 HTTP 将 HTML 文件加载到字符串中以便在 JavaScript 中使用?

javascript - 比较 JavaScript 数组中的值

javascript - 为 toastr 通知调用 jquery 函数

c# - 正则表达式 ~ 将 UNC 转换为 URL

Javascript 正则表达式替换/*

PHP:如何去掉多列行中双引号内的逗号?

javascript - 无法使用 JavaScript 正则表达式替换中间内容?