アキラ
javascriptでさぁ、PHPのis_numericに対応する関数って標準でありそうでないよね。
ワタル
うん。両方
==
と===
を使い分ける言語だから、あってくれてもいいんだけど。
アキラ
どう書こうか。
ワタル
じゃあ、とりあえずPHPのis_numericの挙動を確認しようか。
<?php
is_numeric(42); // 1.true
is_numeric('42'); // 2.true
is_numeric('hello'); // 3.false
is_numeric(' +123.45e6'); // 4.true
is_numeric(''); // 5.false
is_numeric([]); // 6.false
is_numeric('42 '); // 7.true PHP7まではfalse!!
is_numeric('3+5'); // 8.false
is_numeric('3 5'); // 9.false
is_numeric(INF); // 10.true
is_numeric('3.e1234567890'); // 11.true
アキラ
このテストを全部通過すればいいのか。
ワタル
もっとパターンあるかもしれないけど、とりあえずね。
でも今日(2022-11)現在
でも今日(2022-11)現在
php is_numeric javascript
でググって上の方に出てくるページのコードでこのテストクリアできないのが多いのよ。
アキラ
なんで?
アキラ
げ、こんな基本的な仕様変わるんだ。
ワタル
あとはINF入れたときの挙動が逆だったり。まあ上のテストクリアしたjavascriptのコードはこんな感じ。
テストするときはPHPのINFは、jsだとInfinityだから注意してね。
テストするときはPHPのINFは、jsだとInfinityだから注意してね。
function is_numeric(n) {
return !isNaN(n) && !isNaN(parseFloat(n));
}
アキラ
意外に短いな。