Javascript 用于替换引号内字符的正则表达式
我有两个测试字符串:Javascript 用于替换引号内字符的正则表达式,javascript,regex,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 但最后我想说的是: 1+"Q"+2:xyz 1+"Q"+2:xyz 1+"Q"+2:xyz 1+"aQfb"+2:xyz 谁能帮帮我吗。必须在Javascript中工作 编辑: 我已经将我的测试工具切
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
但最后我想说的是:
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
您的模式无法正常工作的原因在于。实际上,您正在尝试替换由三部分组成的模式:
“
开头且既不包含”
也不包含:
:
“
也不包含:
且以结尾的位
("[^:"]*):([^:"]*")
将$1Q$2
替换,这将导致
1+"Q"+2:xyz
1+"aQfb"+2:xyz
您的正则表达式没有正常工作的原因在于。您的正则表达式中的所有反斜杠是怎么回事?没有巫毒逃脱。逃避那些必须逃避的事情,并且只逃避那些事情。我总是逃避引用-看起来我不需要-现在已经改变了它。你的方法不是如预期的那样有效吗?嗯-一定是我用的测试工具-干杯Danilo@Graham不需要在正则表达式文本中转义引号(由
/
分隔)。需要在字符串文本中转义引号。这是字符串文本的要求,与正则表达式无关。正则表达式中的所有反斜杠是怎么回事?没有巫毒逃脱。逃避那些必须逃避的事情,并且只逃避那些事情。我总是逃避引用-看起来我不需要-现在已经改变了它。你的方法不是如预期的那样有效吗?嗯-一定是我用的测试工具-干杯Danilo@Graham不需要在正则表达式文本中转义引号(由/
分隔)。需要在字符串文本中转义引号。这是字符串文本的要求,与正则表达式无关。啊哈-这适用于我编辑的版本-谢谢你一定要花一些时间来考虑贪婪匹配。它有潜力咬你,它有潜力成为一个非常有效的工具。知道它是如何工作的是关键。啊哈-这适用于我编辑的版本-谢谢你一定要花一些时间来思考贪婪的匹配。它有潜力咬你,它有潜力成为一个非常有效的工具。知道它是如何工作的是关键。