ProgramingTip

입력이 숫자 또는 문자 javascript인지 확인

bestdevel 2020. 11. 26. 19:39
반응형

입력이 숫자 또는 문자 javascript인지 확인


HTML과 자바 펼쳐보기 양식을 사용하고 있습니다. 사용자가 LETTER를 입력하고 있고 클릭 하는 경우에만 경고가 표시하고 싶습니다 submit.

그래서 HTML 코드가 있습니다.

<form name="myForm" action="" onsubmit="return checkInp()" method="post">
    First name: <input type="text" name="age">
<input type="submit" value="Submit">   

그리고 자바 펼쳐 코드 :

function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (x consists of any letters) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}

isNaN 함수를 사용하여 값이 숫자로 변환되지 않는지 확인할 수 있습니다. 보이는 같은 예 :

function checkInp()
{
  var x=document.forms["myForm"]["age"].value;
  if (isNaN(x)) 
  {
    alert("Must input numbers");
    return false;
  }
}

문자 만 일치 시키려면 정규식을 사용하십시오 . 특정 숫자인지 확인하는 것과 같이 더 복잡한 작업을 수행해야 할 경우에 대한 작업을 수행해야합니다.

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[a-zA-Z]+$/;
    if (!x.match(regex))
    {
        alert("Must input string");
        return false;
    }
}

숫자 이외의 것을 부정하는 것이 좋습니다.

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[0-9]+$/;
    if (x.match(regex))
    {
        alert("Must input numbers");
        return false;
    }
}

isNaN 함수를 사용할 수 있습니다 . 데이터가 숫자가 아니면 true를 반환합니다. 그것은 다음과 가변적입니다.

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    if (isNaN(x)) // this is the code I need to change
    {
        alert("Must input numbers");
        return false;
    }
}

참고 : isNan은 10.2를 유효한 숫자로 기재합니다.


isNaN ()을 사용할 수 있습니다. 데이터가 숫자가 아닌 경우 true를 반환합니다.

var data = 'hello there';
if(isNaN(data)){
  alert("it is not number");
}else {
  alert("its a valid number");
}

1로 나누어 나머지를 찾으십시오. 즉 x % 1입니다. 나머지가 0이면 x가 정수임을 의미합니다. "숫자를 입력해야합니다"라는 이름이 표시되어야합니다. 이것은 활성화, 십진수 등의 경우에도 작동합니다.

function checkInp()
{
    var x = document.forms["myForm"]["age"].value;
    if ((x%1) != 0) 
    {
        alert("Must input numbers");
        return false;
    }
}

이 시도 :

if(parseInt("0"+x, 10) > 0){/* x is integer */}

이 게시물이 오래 예전에 튀어 나온 것이 처음으로 튀어 나온 것입니다. @Kim Kling RegExp를 시도했지만 비참하게 실패했습니다. 또한이 포럼을 찾기 전에 여기에 거의 모든 변형을 시도했습니다. 결국, 내가 만든 이것 외에는 그들 중 누구도 일하지 않습니다. 잘 작동하며 es6입니다.

    let regex = new RegExp(/[^0-9]/, 'g');
    let x = document.forms["myForm"]["age"].value;

    if (x.match(regex)) {
       alert("Must be a valid number");
            return
    }

더 나은 (오류없는) 코드는 다음과 같습니다.

function isReallyNumber(data) {
    return typeof data === 'number' && !isNaN(data);
}

이것은 빈 이동도 처리합니다. 또 다른 이유는, isNaN("12")로 동일 false하지만, "12"그것은 결과를 필요로하는 경우, 많은이 아닌 숫자입니다 true. 마지막으로 관심을 번만 한 개체 링크 입니다.


function isNumber(data){
    data = data +"e1";                      // Disallow eng. notation "10e2"+"e1" is NaN
    var clean = parseFloat(data,10) / data ; // 1 if parsed cleanly
    return ( data==0 || clean && (data/data) === 1.0);  // Checks for NaN
}

function isInteger(data){
    data = data +"e1";                      // Disallow eng. notation "10e2"+"e1" is NaN
    var clean = parseInt(data,10) / data ; // 1 if parsed cleanly
    return (data==0 ||clean && (data%1) === 0);          // Checks For integer and NaN
}

//Expected pass
console.log(isNumber("0"))
console.log(isNumber("-0.0"))
console.log(isNumber("+0.0"))
console.log(isNumber(0))
console.log(isNumber(-0.0))
console.log(isNumber(+0.0))
console.log(isNumber(1))
console.log(isNumber(-10.0))
console.log(isNumber(+1000.000001))
console.log(isNumber(1))
console.log(isNumber(-10.0))
console.log(isNumber(+1000.000001))

//Expected fail
console.log(isNumber("FF"))
console.log(isNumber("1e1"))
console.log(isNumber("seven"))


쉬운 방법은 추론 Number문자열 object- 를 만들고 클래스 자체에서 isInteger제공하는 기능 현관 의 도움으로 확인하는 Number을 구석으로입니다.

Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false

가장 많은 현대적인 방법은 많은의 숫자가 아닌 실수에 관심이있는 소유의 유형입니다. 예를 들면 :

var a = 1;
var b = '1';

typeof a: // Output: "number"
typeof b: // Output: "string

참고 URL : https://stackoverflow.com/questions/18042133/check-if-input-is-number-or-letter-javascript

반응형