入力フィールドを検証したい。ユーザーは、10 桁以上の電話番号を入力する必要があります。
したがって、不正な文字をチェックする必要があります。入力が整数かどうかをチェックするだけでもいいでしょう。
私はこれを思いつきましたが、うまくいきません (n は文字列になります)。
function isInt(n){
return typeof n== 'number' && n%1==0;
}
何か案は?
入力フィールドを検証したい。ユーザーは、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-question があります: Validate decimal numbers in JavaScript - IsNumeric()
あなたにとってはやり過ぎかもしれませんが、Googleはそれほど前に電話検証用のライブラリを発表していません。JavaとJavascriptのバリアントが利用可能です。
電話番号の検証は、入力が整数かどうかを確認するよりも少し複雑です。例として、電話番号はゼロで始まる可能性があり、実際にゼロで始まるため、技術的には int ではありません。また、ユーザーはダッシュを入力することもできます: 例:
00 34 922-123-456
したがって、検証に関しては、いくつかのオプションがあります。
正規表現を使用して検証します。以下をご覧ください。
このサイトには何百もの例があります
ループを使用して、各文字を順番にチェックします。つまり、文字は 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