我正在寻找一种优雅而强大的方法来替换" "
替换为:,
变为 .
如果包含在 " "
中。
E.g我有这个字符串:
红色的狐狸跳过了懒惰的狗#34;
我希望这成为
红色,狐狸跳过" lazy.dog"
我知道replace()
是一个本机JS函数,可以替换字符串中的字符,但我对如何实现上述内容感到困惑。
我目前唯一能想到的方法是有点复杂,它涉及一个FOR
循环来迭代字符串和IF/ELSE's.
实现这一目标的优雅和稳健方法是什么?
答案 0 :(得分:2)
您可以使用回调。
var r = 'The red, fox jumps over the "lazy,dog"'.replace(/"[^"]+"/g, function(v) {
return v.replace(/,/g, '.');
}); // The red, fox jumps over the "lazy.dog"
答案 1 :(得分:1)
您可以尝试使用以下正则表达式(使用negative lookahead )将,
内的"
替换为.
,
> 'The red, fox jumps over the "lazy,dog" foo,bar foo "bar,foo" "lazy,dog" ,foo'.replace(/,(?!(?:[^"]*"[^"]*")*[^"]*$)/g, ".");
'The red, fox jumps over the "lazy.dog" foo,bar foo "bar.foo" "lazy.dog" ,foo'
答案 2 :(得分:1)
console.log(' hello, ", sdad, " '.replace(/".+?"/g,function(e){return e.replace(/\,/g,".")}))
答案 3 :(得分:0)
试试这个:
var regex = /".*"/,
text = 'The red, fox jumps over the "lazy,dog"';
console.log(text.replace(regex, function(match) { return match.replace(/,/g, '.'); }));