我正在尝试执行以下操作:
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 :(得分: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.3
,3.33
等。
\.?\d+
匹配.3
,.33
,3
,33
等。
<强>交替:强> 如果您需要允许数千,数百万等逗号,请使用以下命令:
myVar = q.match(/\d{1,3}(,\d{3})*\.\d*|\d{1,3}(,\d{3})*|\.\d+/);
\d{1,3}(,\d{3})*\.\d*
匹配3.
,3.3
,3.33
,3,333.3
等。
\d{1,3}(,\d{3})*
匹配3
,33
,3,333
等。
\.\d+
匹配.3
,.33
等