[javascript] 문자열에 숫자 만 포함되어 있는지 확인

string숫자 만 포함되어 있는지 확인하고 싶습니다 . 나는 이것을 사용했다 :

var isANumber = isNaN(theValue) === false;

if (isANumber){
    ..
}

그러나 그것은 또한 수 있다는 실현 +하고 -. 기본적으로 나는 input숫자 만 포함하고 다른 문자 는 포함하지 않기를 원합니다 . +100그리고 -5둘 다 숫자 이므로 isNaN()올바른 방법이 아닙니다. 아마도 정규 표현식이 필요한 것입니까? 팁이 있습니까?



답변

어때?

var isnum = /^\d+$/.test(val);


답변

string.match(/^[0-9]+$/) != null;


답변

String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false


답변

부동 소수점 값 (점으로 구분 된 값)도 지원하려면이 표현식을 사용할 수 있습니다.

var isNumber = /^\d+\.\d+$/.test(value);


답변

문자열에 숫자 만 포함되어 있는지 확인하는 또 다른 재미 있고 읽기 쉬운 방법이 있습니다.

이 메소드는 spread 연산자를 사용하여 문자열을 배열로 분할 한 다음이 every()메소드를 사용 하여 배열의 모든 요소 (문자) 가 숫자 문자열에 포함 되는지 테스트합니다 '0123456789'.

const digits_only = string => [...string].every(c => '0123456789'.includes(c));

console.log(digits_only('123')); // true
console.log(digits_only('+123')); // false
console.log(digits_only('-123')); // false
console.log(digits_only('123.')); // false
console.log(digits_only('.123')); // false
console.log(digits_only('123.0')); // false
console.log(digits_only('0.123')); // false
console.log(digits_only('Hello, world!')); // false


답변

이것은 당신이 원하는 것입니다

function isANumber(str){
  return !/\D/.test(str);
}


답변

정규식을 사용하지 않는 솔루션은 다음과 같습니다.

function onlyDigits(s) {
  for (let i = s.length - 1; i >= 0; i--) {
    const d = s.charCodeAt(i);
    if (d < 48 || d > 57) return false
  }
  return true
}

여기서 48과 57은 각각 “0”과 “9”의 문자 코드입니다.