2016-07-08 8 views
-1

文字列がテキストか数値かを検証しようとしています。 正しい確認方法が見つかりませんでした。 アドバイスをお願いしますか?ここで文字列が数字でないかどうかをテストする方法

は私の問題です:

var myNumber = "006"; 
var myText = "1. This is not a number"; 

isNaN(myNumber); // false 
isNaN(myText); // false 

I tried also: 
isNaN(myNumber.split('.')[1]); // true 
isNaN(myText.split('.')[1]); // true 

parseInt(myNumber); // 6 
parseInt(myText); // 1 

私は何を達成したいことは、文字列が数値(myNumberを参照)に変換することができたときに見つけることであろう。文字列が実際にテキストである場合、どのようにjavascriptでそれを見分けるのですか?

助言してください。

+1

いくつかのregexpを使用しますか? –

+0

ここをクリックしてくださいhttp://stackoverflow.com/questions/1303646/check-whether-variable-is-number-orring-in-javascript – feeeper

+2

私の意見では、最も簡単な方法は、変数に1を掛けてチェックします結果がNaNの場合、 'isNaN(myVariable * 1)' – pawel

答えて

1

parseInt()が望ましい結果を得られない場合は、Numberコンストラクタを試してみてください。 isNaN()機能を使用して確認できる非番号の場合はNaNとなります。

var myNumber = "006"; 
 
var myText = "1. This is not a number"; 
 

 
console.log(Number(myNumber)); 
 
console.log(Number(myText));

それとも、正規表現を使用することができます。

var myNumber = "006"; 
 
var myText = "1. This is not a number"; 
 

 
var numRegex = /^\d+$/; 
 

 
console.log(numRegex.test(myNumber)); 
 
console.log(numRegex.test(myText));

+0

私は 'Number'コンストラクタの解決策が最高だと思います! –

+0

ありがとう@DmitryMasley –

4

私はあなたの質問を理解している場合、正しく、私は解決策を持っているかもしれませんが、これがあっても動作します文字列は数字なのでここに行く:

var yourNumber="55"; 
if(yourNumber*1==yourNumber){ 
alert("It's a number"); 
}else{alert("it's not a number");} 
+0

私はExtendScriptを使用しているので、これは私のためには機能しません。 yourNumber = "55。bla bla bla"という文字列はどうですか? – addme

0
var reg = new RegExp('^[0-9]*$'); 
var myNumber = "006"; 
var myText = "1. This is not a number"; 
reg.test(myNumber) //true 
reg.test(myText) //false 
+0

こんにちはパウエル、ありがとう。私もこのようにしていましたが、$記号を含めるのを忘れました。 – addme

0

テキストは、関数isnanを使用して番号があるかどうかをチェックすることができます:

var myNumber = "006"; 
 
var myText = "1. This is not a number"; 
 

 
console.log(myNumber + ': ' + !isNaN(myNumber)); 
 
console.log(myText + ': ' + !isNaN(myText));

+0

はい、ブラウザで動作します。私はAdobe ExtendScriptを使用していると言って忘れました。 – addme

0

あなたは正規表現を使用することができます。

function isNumber(num){ 
    return /^(\d+)?(\.)?\d+$/.test(num); 
} 

isNumber("006") // true 
isNumber(".6") // true 
isNumber("1 not a number") // false 
isNumber("23.63") // true 
isNumber("23.6.3") // false 
0

ショートストーリー:私は本当にtypeof演算子を使用します

isNaN()| JavaScriptのMDN:

isNaN()関数は値が-A-番号ではないかどうかを決定します。... ECMAScript 6で定義されているようにNumber.isNaN()を使用するか、typeofを使用して値がNot-A-Numberであるかどうかを判断できます。

長い物語:

は、ノードコンソールに次のようにしようとしました。

NaNは、プリミティブな数値が使用できない非数値の数値への変換を試行した結果も発生します。グローバルますisNaN()関数と比較して

isNaN(123)   // false 
isNaN(true)   // false 
isNaN("123")   // false 
isNaN({})   // true 
isNaN(undefined)  // true 

、Number.isNaN()強制番号にパラメータを変換する問題を被りません。つまり、通常NaNに変換される値を渡すことは安全ですが、実際にはNaNと同じ値ではありません。これはまた、型番号の値、つまりNaNだけがtrueを返すことを意味します。

Number.isNaN(undefined)  // false 
Number.isNaN({})    // false 
Number.isNaN(true)   // false 
Number.isNaN(123)   // false 
Number.isNaN(NaN)   // true 
Number.isNaN(0/0)   // true 

typeofオペレータが未評価のオペランドのタイプを示す文字列を返します。

typeof(123)   // number 
typeof("123")   // string 
typeof(true)   // boolean 
関連する問題