我想找到包含点和逗号的数字,但正则表达式在javascript中不起作用

我想找到包含点和逗号的数字,但正则表达式在javascript中不起作用,javascript,regex,Javascript,Regex,我觉得很容易找到答案。但我尝试了多少方法仍然不能正常工作。 下面是测试代码段 "100$ and 1.000,000EUR 1,00.0.000USD .90000000000000000000$ (09898)".replace(/[\.,\d]*/g, '{n}') 我想要下面的结果 {n}$ and {n}EUR {n}USD {n}$ ({n}) *是您的问题,请将正则表达式改为/[,\d]+/g "100$ and 1.000,000EUR 1,00.0.000USD .90000

我觉得很容易找到答案。但我尝试了多少方法仍然不能正常工作。 下面是测试代码段

"100$ and 1.000,000EUR 1,00.0.000USD .90000000000000000000$ (09898)".replace(/[\.,\d]*/g, '{n}')
我想要下面的结果

{n}$ and {n}EUR {n}USD {n}$ ({n})

*
是您的问题,请将正则表达式改为
/[,\d]+/g

"100$ and 1.000,000EUR 1,00.0.000USD .90000000000000000000$ (09898)".replace(/[.,\d]+/g, '{n}');
输出

{n}$ and {n}EUR {n}USD {n}$ ({n}) 

检查控制台屏幕的输出。

这里的问题是,
[\,\d]*
可以匹配空字符串。第一步是使用
[,\d]+
,使这些字符中至少有一个匹配

但是更好的正则表达式应该是
\d[,\d]*
,因为它确保替换的字符以数字开头,所以不会替换句子中的句点

如果您想更进一步,还可以使用
(?=[,\d]*\d)[,\d]+
If来处理以句点开头的数字。这将是你案件的正确答案。向前看确保替换的文本中至少有一个数字

请注意,您不需要在字符类中转义

\.?\d[^\s]*\d
尝试此操作。替换为
{n}
。请参阅演示


1.000000
是一个有效的数字吗?哇,我怎么能错过+。非常感谢。
var re = /\.?\d[^\s]*\d/gm;
var str = '100$ and 1.000,000EUR 1,00.0.000USD .90000000000000000000$ (09898)';
var subst = '{n}';

var result = str.replace(re, subst);