2013-05-09 2 views
0

PHP를 사용하여이 임의의 숫자를 추측하는 게임을 만들었으며 자바 스크립트를 사용하여 클라이언트 측 폼 유효성 검사를 구현하려고합니다. 스크립트는 1-100 사이의 숫자 만 허용하고 공백, 영숫자, 음수 및 부동 소수점 숫자 및/또는 이들을 혼합 한 것을 모두 거부해야합니다. 여기에 지금까지있어 스크립트의 :JavaScript 정규식 유효성 검사 실패

<script type="text/javascript"> 
//<![CDATA[ 

// The checkForm() function makes sure the user's guess is valid 
function checkForm() { 
    var numericExpression = /[-+]?([0-9]*\.)?[0-9]+/; // Code is from regular-expressions.info 
    if (document.getElementById("userGuess").value.match(numericExpression)) { 
     return true; 
     } // ends the if statement 
    else { 
     alert("Enter a valid number between 1-100 that isn't negative or a decimal value"); 
     document.getElementById("userGuess").focus(); 
     return false; 
    } // ends the else statement 
} 
//]]> 
</script> 

그리고 여기 폼의 : 비록 의도 한대로

<div id="container"> 
    <h1 id="mainHeading">Let's play a game!</h1> 

    <h2 id="subHeading">I'm thinking of a number between 1-100. Take a guess on what you think it is.</h2> 

    <!-- User input --> 
    <form action="" method="post" onsubmit="return checkForm()" name="formGuess" id="formGuess"> 
     <input type="text" name="userGuess" id="guessInput" /> 
     <button type="submit" id="submit">You're probably going to get it wrong.</button> 
    </form> 
</div> <!-- End container div --> 

그것은 작동하지 않습니다, 그것은 순수한 알파벳 입력을 거부합니다. 섞여서 스크립트가 작동하지 않습니다. 내 개인 웹 사이트에 웹 페이지를 업로드했습니다 : PHP random number game

고마워요!

+3

1의 숫자를 확인하려면 보자 : 1과 100 사이 당신이 정규식을 사용하고 있기 때문에 정말 문자열)이며, 여기에 한 가지 방법입니다 -100 당신은 정규식이 필요하지 않습니다. – elclanrs

답변

0

난 당신이 정규식 (A 번호를 같이하는 방법을 알고 싶어하는 경우에, 당신이 정말로 정규식을 필요로하지 않는 다른 사람과 동의하지만 어떤 /^[1-9]$|^[1-9][0-9]$|^100$/

가 도움이 있으면 알려이나 질문이 :)이있는 경우

+0

007을 허용하지 않는 이유는 무엇입니까? 또는 "007"? – RobG

+0

정말 대단해, ​​고마워! 나는 당신이 지금 만든이 정규 표현식을 이해하려고 노력하고 있습니다. 그래서 내가 이것을 올바르게 이해한다면,이 정규식은 1-9에서 한 자리까지를 허용합니다. 또는 첫 번째 자릿수는 1-9이고 두 번째 자릿수는 두 번째 자릿수입니다 (실제로 1-99를 허용 함). 또는 단순히 100입니다. ^와 $는 시작과 끝 부분에서 다른 어떤 것도 올 수 없게 만듭니다. 그게 맞습니까? o : – iBringDaLULZ

+0

@iBringDaLULZ 네, 네가 찍었다. :) – asifrc

2

정규식이 필요하지 않습니다. 변수가 숫자를 사용하는 경우 확인하려면 다음

var isNumber = (! isNaN(variable)); 
+0

왜 바깥 괄호가 사용됩니까? – elclanrs

+0

그냥 개인적인 취향입니다. –

+0

나는 정규 표현식에 익숙해 지려고 노력하고있다. 그래서 나는 이런 식으로하고있다. 도움을 주셔서 감사합니다! – iBringDaLULZ