在javascript中检查整数

时间:2014-02-14 11:44:55

标签: javascript

我有一个正则表达式,我正在检查文本条目是否为数字。这是Year字段,它应该只接受像1999或2000等整数。但在这种情况下,它也接受 - ,+ ,.等

isNumeric = function(b){
    return(b-0) == b&&(b+"").replace(/^\s+|\s+$/g,"").length > 0
};

你能帮帮我!!

4 个答案:

答案 0 :(得分:2)

如果您需要接受20年 th 和21 th 世纪的年份,可以使用更精确的正则表达式

isNumeric = function(b){
    return /^(19|20)\d{2}$/.test(b)
};

如果您需要始终接受4位数的年份,那么正则表达式就是

/^\d{4}$/

如果您需要每年接受0到9999(不接受0的结尾)

/^(0|[1-9]\d{0,3})$/

答案 1 :(得分:1)

你可以检查它:

if(!isNaN(parseInt(yourstring))){

}

并使用正则表达式,你可以这样做:

/^[0-9]+$/i.test(yourstring)

答案 2 :(得分:1)

更好的解决方案是限制用户使用Javascript Create函数输入除Numeric之外的键,如下所示:

function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}

并将onkeypress事件添加到文本框中:

<input type="text" class="textfield" value="" id="extra7" name="extra7"
onkeypress="return isNumber(event)" />

演示:JS Fiddle

您还可以通过将maxlength="4"添加到收件箱来限制用户仅输入4个数字。

答案 3 :(得分:1)

如果您希望验证一系列(正)年份,例如1980年至2020年,其中不接受字符串'+2000'。

isNumeric = function(b){
    return /^(198\d|200\d|2020)$/.test(b);
}

这将通过以下测试 - 它已经过测试here

功能已重命名为yearRange

yearRange = function(b){
    return /^(198\d|200\d|2020)$/.test(b);
}


test('Year range validation', function() {
   equal( yearRange(1979), false, '1979 returns false');
   equal( yearRange(1980), true, '1980 returns true');
   equal( yearRange('2000'), true, 'The string 2000 returns true');
   equal( yearRange(+2000), true, '+2000 returns true' );
   equal( yearRange(-2000), false, '-2000 returns false' );
   equal( yearRange('+2000'), false, 'The string +2000 returns false');
   equal( yearRange('-2000'), false, 'The string -2000 returns false');
});