繁体   English   中英

javascript正则表达式为整数和十进制数(钱)

[英]javascript regex for whole and decimal numbers (money)

试图写一个javascript正则表达式强制用户输入一个整数后的小数,似乎很多人不想这样做,因为我的搜索没有产生任何符合我需要的东西。

Match: 2.00 20.00 200.00 1.73 0.10

No Match: .2 .20 . 1 10 1.0 0.1 1.

这是我目前的情况:

var regexp=/^[0-9]{1,}\\.{1}[0-9]{2}$/;

用简单的英语,用户必须以X.XX格式输入资金。 只有一个数字本身是不允许的。

我很感激任何帮助,也教会了任何人在完成这项工作时提供的见解。

编辑:

这是代码:

var notempty=/[a-zA-Z0-9\.\$]/g;
var money=/^[0-9]{1,}\.{1}[0-9]{2}$/;

if ( (notempty.test(document.getElementById('numbers').value)) && (!money.test(document.getElementById('numbers').value)) )
{alert('Wrong format');}

您的初始正则表达式是正确的,问题实际上是您的notempty检查可以在值为false使条件短路。 例如,如果您的字符不是字母,数字,美元符号或句点,则/ /[a-zA-Z0-9\\.\\$]/它将评估为false并忽略&&之后的项目作为值无所谓因为false && [any conditions] = false 例如,如果输入值为"+"

if ( false && ... )
    // invalid format [the expression was false, so this isn't ran]

由于第一个条件为false因此整个表达式变为假,导致不正确的"correct format" 无论如何,在这种情况下不需要“空检查”,您可以简单地:

if (money.test(document.getElementById('numbers').value) {
    // valid format
} else {
    // invalid format
}

正如@JostCrozier所指出的,您的表达式可以简化为:/ /^\\d+\\.\\d{2}$//^\\d+\\.\\d{2}$/ ,这在功能上是等效的。

暂无
暂无

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

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