簡體   English   中英

使用正則表達式驗證輸入中是否包含任何非數字

[英]Using a regular expression to validate whether input has any non digits in it

function validInteger(theNumber){
    var anyNonDigits = new  RegExp('\D','g');
    if(parseInt(theNumber)&&!anyNonDigits.test(theNumber)){
        return true;
    }else{
        return false;
    }
}

以上是我為驗證一些輸入而編寫的函數。 我想要所有正整數。 我面臨的問題是使用RegExp對象。 這似乎應該是超級簡單的,但由於某種原因,它不起作用。

例如,如果我通過'f5',我會得到真的,但如果我通過'5f',我就會變錯。 傳遞負數時我也遇到了問題。 即使我在將變量傳遞給RegExp之前對變量進行了字符串化,-3也不會被捕獲。 我可以通過在if語句中添加' &&parseInt(theNumber)>0 '來解決這個問題,但我覺得RegExp也應該抓住它。 提前致謝!

只是:

function validInteger(theNumber){    
    return theNumber.match(/^\d+$/) && parseInt(theNumber) > 0;
}

現場演示

或者甚至更簡單,正如@Eric所建議的regex

return /^[0-9]\d*$/.test(theNumber);

現場演示

更新:

一個優秀的備忘單。 該鏈接在5年后死亡,對不起。

如果沒關系,請不要使用RegExp,您可以:

function validInteger(theNumber){
    var number = +theNumber;

    return number > -1 && number % 1 === 0;
}

假設您將0視為正整數,並且您不希望區分+0和-0。

請注意,此功能將接受任何值theNumber可在數轉換,所以不只是“串”,你可以通過數量以及課程。

簡單!

function validate(num){
    return (num | 0) > 0;
};

此函數僅對正整數返回“true”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM