繁体   English   中英

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

[英]Regular expression for any double type number

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

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

但是,当我键入一个十进制数时,myVar直到我键入十进制值后才选择十进制。

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

如何修改此值,以便myVar在第二步等于3。

谢谢。

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

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

可以简化为:

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

问题是它正在寻找至少1个数字。 在您的情况下,您想要0或更大。

看来您也想匹配.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM