在javascript中将字符串中所有逗号分隔的数字替换为点分隔的数字

在javascript中将字符串中所有逗号分隔的数字替换为点分隔的数字,javascript,regex,Javascript,Regex,例如,假设有带数字的字符串, test()测试12,01%test(12,4)12.3s2一些其他文本,其他文本,2,文本 我需要用逗号替换数字,用点替换相同的数字,并且不要更改任何其他内容。所以绳子会变成 test()测试12.01%test(12.4)12.3s2一些其他文本,其他文本,2,文本 我试过这样的方法: var newstr = str.replace(/^\d+,\d+$/g, "\1.\2"); 或 var newstr=str.replace(^\d*\,?\d+$/g,

例如,假设有带数字的字符串,
test()测试12,01%test(12,4)12.3s2一些其他文本,其他文本,2,文本

我需要用逗号替换数字,用点替换相同的数字,并且不要更改任何其他内容。所以绳子会变成

test()测试12.01%test(12.4)12.3s2一些其他文本,其他文本,2,文本

我试过这样的方法:

var newstr = str.replace(/^\d+,\d+$/g, "\1.\2");
或 var newstr=str.replace(^\d*\,?\d+$/g,“\1.\2”)

  • 我认为这应该匹配任何带有逗号的数字:^\d*\,?\d+$
试试这个:

var newstr = str.replace( /\b(\d+),(\d+)\b/g, "$1.$2");
在其中设置
\b
单词边界的目的是确保不会意外地匹配与字母相邻的数字。由于示例的一部分包含文本
2,text
,因此可能会出现一些异常文本,例如
2,1text
,在这种情况下,您可能不打算用句点替换逗号

yourString.replace(/(\d),(\d)/g, "$1.$2")

这将匹配数字之间的每个逗号。

您可以这样做并捕获两个组:

解释

  • 组1:捕获一个或多个数字
    (\d+)
  • 匹配逗号
  • 组2:捕获一个或多个数字
    (\d+)
var str=“test()test 12,01%test(12,4)12.3 s 2一些其他文本,其他文本,2,文本”;
var newstr=str.replace(/(\d+),(\d+)/g,“$1.$2”,”;

console.log(newstr)
/(\d+),(\d+)/g
var newstr=str.replace(/(\d),(\d)/g,“\1.\2”)$1.$2
(JS奇怪地认为字符串中的反斜杠;因此对于正则表达式,它要求您在替换的版本中使用该格式),这与第一次出现的情况不匹配,即str=“2,3 test e2,mis 2.3 4,54 tes”,我不认为(对于当前的要求)你必须检查数字前后的内容。@MarouenMhiri你说得对-谢谢。更新了我的答案,以包括数字出现在字符串开头或和处的情况。第四只鸟的答案最好。您不需要匹配整数来替换逗号。@tiagodws这是正确的。在这种情况下,速度略快于。很高兴知道。谢谢你的解释!仅供将来参考,您从何处找到此信息?如果字符串包含大整数,则结果可能不同。
\b(\d+),(\d)
更快,但前提是数字前面没有字母或下划线