我有两个测试字符串:
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
最佳答案
实际上,您正在尝试替换由三部分组成的模式:
- 以
"
开头且既不包含"
也不包含的位:
- 一个
:
- 既不包含
"
也不包含:
并以"
结尾的位
所以表达式看起来像:
("[^:"]*):([^:"]*")
用 $1Q$2
代替
1+"Q"+2:xyz
1+"aQfb"+2:xyz
你的没有正常工作的原因在于greedy matching .
关于javascript - 用于替换引号内字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870004/