javascript:用逗号替换所有点,除了十进制分隔符

时间:2018-03-29 08:35:25

标签: javascript regex

我需要用逗号替换所有点,而不是用数字作为十进制分隔符的那些点。 例子:

  • -> test,test 1.2 test
  • -> 1.2 test 1.2.test
  • -> 1.2,test test.test aaa (bbb. dddd 1.2g)
  • -> test,test aaa (bbb, dddd 1.2g) def get_x_y_co(circles): xc = circles[0] #x-co of circle (center) yc = circles[1] #y-co of circle (center) r = circles[2] #radius of circle arr=[] for i in range(360): y = yc + r*math.cos(i) x = xc+ r*math.cos(i) x=int(x) y=int(y) #Create array with all the x-co and y-co of the circle arr.append([x,y]) return arr

首先,我认为我可以这样做:

  • 仅匹配任何字母后面的thouse点([a-z] *?[。]),但在这种情况下,第三个示例无法正常工作

你能给我一些线索吗?

2 个答案:

答案 0 :(得分:1)

您可以在正则表达式中使用否定前瞻:

str = str.replace(/\.(?!\d)/g, ',');

RegEx Demo

\.(?!\d)匹配点,如果后面没有数字。

答案 1 :(得分:1)

没有lookibehind断言(在ES2018中引入)可能有点棘手

str = str.replace(/^\.|(\D)\.|(\d)\.(?!\d)/g, "$1$2,");

这个通过了你的所有测试。

或者,使用ES2018 lookbehind断言,您可以使用

str = str.replace(/(?<!\d)\.|\.(?!\d)/g, ",");