2014-01-10 6 views
0

이 정규 표현식은 false를 계속 반환하며 왜 볼 수 없습니까? 나는이 이벤트를 발생시키는 onkeydown 이벤트를 가지고 있는데, 'w'키를 시도했지만 작동하지 않습니다.정규 표현식이 작동하지 않습니다.

var keyGLOB = ''; 

function editProductSearch (event) { 
    console.log(keyGLOB); 
    var key = String.fromCharCode(event.keyCode); 
    if(event.keyCode == 8) { 
     keyGLOB = keyGLOB.substring(0, keyGLOB.length -1); 
     return false; 
    } 
    var regex = /^[a-zA-Z0-9]+$/; 
    if(regex.test(key)) { 
     if(regex.test(keyGLOB)) { 
      keyGLOB += key; 
      searchDb(keyGLOB.toLowerCase()); 
     } else { 
      alert('letters and numbers only!'); 
      return false; 
     } 
    } else { 
     alert('letters and numbers only!'); 
     return false; 
    } 
} 

HTML :에서

<p><input id='product-edit-search' onkeydown='editProductSearch(event)'></p> 
+6

무엇을 테스트하고 있습니까? – Andy

+2

'키 '란 무엇입니까? 'keyGLOB'이란 무엇입니까? –

+3

'key' 및/또는'keyGLOB'에는 문자와 숫자 이외의 것이 포함되어 있습니까? 당신의 의견이 없다면, 어떻게 추측 할 수 있을까요? –

답변

5
if(regex.test(keyGLOB)) { 
     keyGLOB += key; 

이 keyGLOB가 빈 문자열이 나는 기반 false를 반환 생각 프로그램에서 이전에 정의 된 방법에 따라 여전히 경우 귀하의 정규식에.

+0

그게 전부 야! 덕분에, 빈 문자열을 받아 들일 수 있도록 정규식에 무엇을 추가 할 수 있습니까? – user3105607

+0

예. 트리거되는'alert '는 사실'if (regex.test (keyGLOB)) {'안의'else' 절 안에있는 것이지, 바깥 쪽이 아닙니다. OP가 다른 것을 오해하고있는 것 같습니다. – acdcjunior

+2

'/^[a-zA-Z0-9] * $ /'('+'대신'*')를 선택하면됩니다. – acdcjunior

관련 문제