任何双精度数的正则表达式

时间:2014-11-26 21:06:28

标签: javascript regex match

我正在尝试执行以下操作:

myVar = q.match(/[0-9]*\.[0-9]+|[0-9]+/);

但是,当我键入小数时,myVar在我输入十进制值之前不会拾取小数。

Entered 3, myVar = 3
Entered ., myVar = 3
Entered 3, myVar 3.3

如何修改这个,以便myVar在第二步等于3.

感谢。

2 个答案:

答案 0 :(得分:2)

不要在[0-9]后使用+表示发生1次或更多次。尝试使用*。它应该工作。

myVar = q.match(/[0-9]*\.[0-9]*|[0-9]*/);

可以简化为:

myVar = q.match(/[0-9]*\.[0-9]*/);

问题是它之后正在寻找至少1个数字。在你的情况下你想要0或更多。

答案 1 :(得分:1)

看起来你也希望匹配像.3这样的东西,对吗?但是你必须确保你的正则表达式本身与小数点.不匹配。所以你可以用这些替换来做到这一点:

myVar = q.match(/\d+\.\d*|\.?\d+/);

\d+\.\d*匹配3.3.33.33等。

\.?\d+匹配.3.33333等。

<强>交替: 如果您需要允许数千,数百万等逗号,请使用以下命令:

myVar = q.match(/\d{1,3}(,\d{3})*\.\d*|\d{1,3}(,\d{3})*|\.\d+/);

\d{1,3}(,\d{3})*\.\d*匹配3.3.33.333,333.3等。

\d{1,3}(,\d{3})*匹配3333,333等。

\.\d+匹配.3.33