2014-09-30 47 views
0

想要使用JavaScript检查整数值的验证。目前,这一工作正常整数,但我想它允许一个空字符串,""如何在验证整数值时允许空字符串

function validateInt(inputString, columnName) { 
    var errorOutput = ""; 

    var isNum = /^\d+$/.test(inputString); 

    if (!isNum) { 
     errorOutput += "<br>* Column " + columnName + " can only contain numbers. "; 
    } 

    return errorOutput; 
} 

var isNum = ...一个额外的条件?有任何想法吗?

+0

http://stackoverflow.com/questions/10936293/using-a-regular-expression-to-validate-whether-input-has-any-non-digits-in-it – PSR 2014-09-30 13:07:16

+0

inputString.length == 0? – Hacketo 2014-09-30 13:07:37

+0

@tymeJV,你的建议是完美的。只是小小的拼写错误。它是'isNaN(inputString)' – 2014-09-30 13:08:52

回答

2

使用*修饰符(零个或多个)也许会简单地代替+修饰符(一个或多个):

var isNum = /^\d*$/.test(inputString); 

这将使数字,只串有零位数字(即空字符串)或一些正位数字。

+0

感谢您的帮助 – John 2014-09-30 13:47:05

0

使用

if (!isNum || inputString === "") { 
    ... 
+0

应该是'!==',因为OP想要允许''“''。另外,当值为空时,第一个检查“!isNum”将为真。所以你需要在使用正则表达式检查之前检查空值。例如'if(inputString!==“”&&!isNum){' – Kami 2014-09-30 13:14:30

0

使用由1模量,验证整数时,允许空字符串:

var isNum = inputString % 1 === 0; 

正如评论说,这将允许十六进制,二进制,并且可以通过parseInt解析等数表示。它可能不适合你的具体情况,如果你不想允许这些格式,但那些技术上整数以及整数,以及任何人谁发现这一点,并需要该功能。如果在使用输入之前对输入使用parseInt(),我认为使用它没有任何伤害(如果我错了,请纠正我)。

+0

这仍然允许'“”'作为输入。 – DontVoteMeDown 2014-09-30 13:12:41

+0

@DontVoteMeDown他说他想允许空字符串 – 2014-09-30 13:13:15

+0

被警告,这将允许在输入字符串中使用十六进制和科学记数法:'“0xFAD”%1 === 0'和'“1e10”%1 === 0“是两个'真'。请参阅ES5的[* ToNumber应用于字符串类型*](http://www.ecma-international.org/ecma-262/5.1/#sec-9.3.1)了解如何将字符串强制为整数。 – apsillers 2014-09-30 13:13:32

0

在这种情况下,如果(value)或if(value ==“”)在单个条件下不能重新使用。你必须为此写两个声明。尝试如果(值||值=='')也。

相关问题