프로그래밍 언어/HTML,CSS,JS

JavaScript에서 문자열이 숫자인지 확인하는 방법

Rateye 2021. 12. 14. 14:04
728x90
반응형
질문 : (내장) JavaScript에서 문자열이 유효한 숫자인지 확인하는 방법

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.


Floats

+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
출처 : https://stackoverflow.com/questions/175739/built-in-way-in-javascript-to-check-if-a-string-is-a-valid-number
728x90
반응형