2013-02-01 2 views
1

I 다음 JS 코드가 있습니다검증 특수 문자 자바 스크립트

편집

 function validateForm() { 
      var IsOk = true; 
      var RegNumbers = (/^[0-9]+$/); 
      var iChars = "[email protected]#$%^&*()+=-[]\';,/{}|\":<>?"; 
      if (Fname == null || Fname == "") { 
        alert("can't be empty"); 
        IsOk = false; 
       } 
       else if (Fname.length < 2) { 
        alert("the iput too short "); 
        IsOk = false; 
       } 
    else if (Fname != "") { 

      if (RegNumbers.test(Fname)) { 
       alert("Fname can't include numbers"); 
       IsOk = false; 
      } 
        for (var i=0; i<Fname.length;) { 
       if (iChars.indexOf(Fname[i]) != -1) { 
        IsOk = false; alert('no special chracters pleas!'); 

        break; 
       } 

    } 

    } 
      } 

문제는 입력에 특수 문자가있는 경우는 allowd되지 않는다는 경고가 없다는입니다. 왜?? 도움을 청하십시오. 감사합니다

답변

2

이 줄 다음 Fname 문자열 내부 iChars 경우

if (iChars.indexOf(Fname) >= 0) { 

만 테스트하고있다. 드문 경우를 제외하고는 Fname이 특수 문자가 들어있는 1 문자 문자열 인 경우에만 테스트합니다. 정규식을 사용하여

for (var i=0; i<Fname.length; i++) { 
    if (iChars.indexOf(Fname[i]) >= 0) { 
     alert('...'); 
     IsOk = false; 
     break; 
    } 
} 

당신은 "간단하게"수 :

(즉, 정규식을 사용하지 않음), 당신이하고 Fname을 반복 할 것 같은 논리를 유지하려면

if (Fname.match(/[\!\@#\$\%\^\&\*\(\)\+\=\-\[\]\\\'\;\,\/\{\}\|\"\:\<\>\?]/)) { 
     alert('...'); 
     IsOk = false; 
} 
+0

답장을 보내 주시지 만, 어떻게 해결할 수 있습니까? (방금 JS 학습을 시작했습니다.) –

+0

답변 해 주셔서 감사합니다 !!! 그것은 작동합니다! –

+0

안녕하세요, 귀하의 솔루션에 문제가 있습니다. 입력이 괜찮 으면 페이지가 멈 춥니 다. 왜? –

1

당신 문자 중 하나를 테스트해야합니다. 가장 좋은 방법은 정규식을 사용하는 것입니다.

var iChars = "[email protected]#$%^&*()+=-[]\';,/{}|\":<>?"; 
    , iRx = new RegExp('[\\' + iChars.split('').join('\\') + ']'); 

... 

if(iRx.test(Fname)) { 
    ... 
} 

이것은 무엇입니까? 정규 표현식에 알 자 :

[\!\@\#...] 

그 모든 문자가 없음 참고

일치합니다 어디서든 문자열의 경우 의미, 당신은 ==null 검사가 필요하지 않습니다. 기능적으로는 ==""과 같습니다. != "" 수표도 필요하지 않습니다. (이미 확인 했으므로)

그리고 정규 표현식은 /[0-9]/이어야합니다. 그렇지 않으면 foo22bar이 허용됩니다.

+0

대단히 감사합니다! –