簡體   English   中英

檢查整數字符串

[英]Check string for integer

我想驗證輸入字段。 用戶應輸入最小長度為10位的電話號碼。

所以我需要檢查非法字符。 只檢查輸入是否為整數會很好。

我想出了這個,但它不起作用(n將是字符串)。

function isInt(n){
    return typeof n== 'number' && n%1==0;
}

有任何想法嗎?

你可以這樣做一個測試:

input.length >= 10 && /^[0-9]+$/.test(input)

如果字符串中有非數字或字符串長度小於10個字符,則會失敗

這應該工作( (input - 0)自動嘗試將值轉換為數字):

function isInt(input){
   return ((input - 0) == input && input % 1==0);
}

關於此問題已經存在SO問題: 在JavaScript中驗證十進制數 - IsNumeric()

可能對你來說太過分了,但谷歌不久前還宣布了一個用於電話驗證的 Java和Javascript變體可用。

驗證電話號碼比檢查輸入是否為整數要復雜一些。 作為一個例子,電話號碼可以並且確實以零開頭,因此它不是技術上和整數。 用戶也可以輸入破折號:例如:

00 34 922-123-456

因此,至於驗證它,您有幾個選擇:

  • 使用正則表達式進行驗證,看看:

    http://regexlib.com/

    這個網站將有數百個例子

  • 使用循環依次檢查每個字符,即字符為int或dash

我會推薦前者,因為后者取決於用戶的一致輸入,你不會得到它

為什么不使用:

return (+val === ~~val && null !== val);

作為你的功能的回報?

這是javascript控制台的輸出

> +"foobar" === ~~"foobar"
  false
> +1.6 === ~~1.6
  false
> +'-1' === ~~'-1'
  true
> +'-1.56' === ~~'-1.56'
  false
> +1 === ~~1
  true
> +-1 === ~~-1
  true
> +null === ~~null // this is why we need the "&& null !== val" in our return call
  true 

暫無
暫無

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

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