[解決済み] 文字列が有効な数値であるかどうかを確認するにはどうすればよいですか?
2022-03-19 03:13:54
質問
昔のVB6と同じ概念空間のものがあるといいのですが
IsNumeric()
関数を使用できますか?
どのように解決するのですか?
2020年10月2日
多くの基本的なアプローチは、微妙なバグ(例えば、空白、暗黙の部分解析、基数、配列の強制など)をはらんでおり、ここでの回答の多くは考慮されていないことに注意してください。以下のような実装がありますが、これは小数点以下の数字の区切りには対応していないことに注意してください。
.
となります。
function isNumeric(str) {
if (typeof str != "string") return false // we only process strings!
return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
!isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail
}
変数(文字列を含む)が数値であるかどうかを調べるには、数値でないかを調べます。
これは、変数の内容が文字列か数字かに関係なく動作します。
isNaN(num) // returns true if the variable does NOT contain a valid number
事例紹介
isNaN(123) // false
isNaN('123') // false
isNaN('1e10000') // false (This translates to Infinity, which is a number)
isNaN('foo') // true
isNaN('10px') // true
isNaN('') // false
isNaN(' ') // false
isNaN(false) // false
もちろん、必要であれば、これを否定することもできます。例えば
IsNumeric
の例を挙げましたね。
function isNumeric(num){
return !isNaN(num)
}
数字を含む文字列を数字に変換する場合。
文字列が
のみ
は数字を含むか、さもなければ
NaN
.
+num // returns the numeric value of the string, or NaN
// if the string isn't purely numeric characters
事例紹介
+'12' // 12
+'12.' // 12
+'12..' // NaN
+'.12' // 0.12
+'..12' // NaN
+'foo' // NaN
+'12px' // NaN
文字列を緩やかに数値に変換する場合
12px」を「12」に変換する場合などに便利です。
parseInt(num) // extracts a numeric value from the
// start of the string, or NaN.
事例紹介
parseInt('12') // 12
parseInt('aaa') // NaN
parseInt('12px') // 12
parseInt('foo2') // NaN These last three may
parseInt('12a5') // 12 be different from what
parseInt('0x10') // 16 you expected to see.
フロート
とは異なり
+num
,
parseInt
(は,小数点以下を切り捨てて浮動小数点数を整数に変換します (もしあなたが
parseInt()
というのも
という挙動になります。
を使用したほうがよいでしょう。
):
+'12.345' // 12.345
parseInt(12.345) // 12
parseInt('12.345') // 12
空の文字列
空の文字列は、少し直感に反するかもしれません。
+num
は空の文字列や空白を含む文字列を0に変換し
isNaN()
を想定しています。
+'' // 0
+' ' // 0
isNaN('') // false
isNaN(' ') // false
しかし
parseInt()
は同意しない。
parseInt('') // NaN
parseInt(' ') // NaN
関連
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
fetch ネットワークリクエストラッパーの説明例
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。