用双引号复合替换浮点数

时间:2016-09-27 07:33:18

标签: javascript json regex

我遇到了在PHP和javascript Ajax调用之间来回流动的JSON字符串的问题。 PHP例程在浮点数周围发送JSON编码的字符串,但没有引号,即

{"Route_1":[{"lat":-31.526107395574975,"lng":146.31591796875},{"lat":-31.51674215813217,"lng":145.5303955078125}]}}

但是当ajax例程接收到JSON字符串时,所有浮点数都有双引号,如下所示:

{"Route_1":[{"lat":"-31.526107395574975","lng":"146.31591796875"},{"lat":"-31.51674215813217","lng":"145.5303955078125"}]}

因此,经过几天试图找到它的底部,我已经决定最好的行动方案是解析这个以删除双引号。我可以识别浮点数并使用.replace and callback。但是复合替换不能像我期望的那样工作 - 也就是说它只返回相同的字符串。

有人可以对此有所了解吗?顺便说一句,这与提出how to parse a JSON string.

的问题不同



var str = '{"Route_1":[{"lat":"-31.526107395574975","lng":"146.31591796875"},{"lat":"-31.51674215813217","lng":"145.5303955078125"}]}'

var regex = /[-+]?[0-9]*\.?[0-9]+/g;

var t = str.replace(regex, function(x) {
  return x.replace(/"/g, "");
})

console.log(t);




1 个答案:

答案 0 :(得分:2)

您需要在正则表达式中匹配"。请查看以下更新。

var str = '{"Route_1":[{"lat":"-31.526107395574975","lng":"146.31591796875"},{"lat":"-31.51674215813217","lng":"145.5303955078125"}]}';

var regex = /\"[-+]?[0-9]*\.?[0-9]+\"/g;

var t = str.replace(regex, function(x) {
  return x.replace(/"/g, "");
})

console.log(t);