2011-06-14 5 views
1

',', '^', '=', '' ','< '등의 특수 문자와 영숫자 값을 허용하는 정규식을 작성하고 싶습니다. '>', '|' .일부 특수 문자를 허용하지 않는 정규식

function dbaNameCheck(input, regex) 
{ 
    if (regex && input.value.length > 0) 
    { 
    if(regex.match(/dbaNameCheck/i) && input.value.match(/[0-9A-Za-z]|[\`\^\=\"\<\>\|]*/g)) 
    { 
     input.value = input.value.replace(/[\`\^\=\"\<\>\|]*/g, ''); 
     input.focus(); 
    } 
    } 
} 

내가 키 누르기 이벤트에이 같은이 함수를 호출 오전 : 나는 그것을 할 방법이 아주 새롭고 정말 점점 아니에요 나는 다음과 같은 노력하고

onkeypress="dbaNameCheck(this,'dbaNameCheck');" 

을하지만 그렇지 않아 내 텍스트 상자의 값은 위에 열거 한 것을 제외한 영숫자와 특수 문자가 될 수 있습니다. 누군가가 이것을 도와 줄 수 있습니까?

답변

1

/[^`^="<>|]/은 해당 문자를 제외한 모든 문자와 일치해야합니다. 다음 c haracters ".


는 있지만 빈 문자열을 가진 사람을 대체 할 거라면, 당신은 아마 하지 수행 ^ 첫째을 원한다. 그런 다음

function dbaNameCheck(input) 
{ 
    var re = /[`\^="<>|]+/g; 

    if (input.value.length > 0 && re.test(input.value)) 
    { 
     input.value = input.value.replace(re, ''); 
     input.focus(); 
    } 
} 

이런 식으로 전화 :

onkeyup="dbaNameCheck(this);" 

onKeyUp에 원하는 이벤트

'|||abc<==<<<'.replace(/[<>|]/g, '') 

+0

감사처럼 호출합니다. – Marty

+0

답변 주셔서 감사합니다 jcomeau_ictx. 그러나 실제로 아래에 표시된대로 시도 : – Debojyoti

2
이 같은 함수를 다시 작성

"=== ABC"제공 onKeypress 대신에 잡기.

+0

안녕하세요 shinkou, 답해 주셔서 감사하지만 그것은 텍스트 상자에 둘 이상의 문자를 입력 할 수 없습니다. 실제로 jcomeau_ictx가 제공하는 솔루션은 금지 된 문자의 첫 번째 발생을 감지 할 수 없다는 점을 제외하고는 작동합니다. 예 : "asd>"라고 쓰면 내가 원한 것은 텍스트가 "asd"로 다시 포맷되어야한다는 것입니다.하지만 그런 일은 일어나지 않습니다. 그러나 "asd>"다음에 ">"를 입력하려고 시도하면 방해가됩니다. 첫 번째 경우에도 동일한 동작이 필요합니다. – Debojyoti

+0

@Debojyoti, Firefox와 Chrome에서 작동하는지 확인했습니다. 어떤 브라우저를 사용하고 있습니까? – shinkou

+0

실제로 Shinkou, 당신 말이 맞아요. 나는 onkeyup을 사용하는 것을 잊었고, 또한 정규 표현식을 약간 수정했다고 생각합니다. 그러나, 나는 당신에게 대접을 빚지고있다, 정말로 감사한다. – Debojyoti

0

참고로 정규식을 사용하지 않고도 원하는 것을 달성 할 수있는 또 다른 방법이 있습니다. 그러나 복사하여 붙여 넣기를 처리 할 수없는 경우

먼저

function killKeys(e) 
{ 
    switch(e.charCode) 
    { 
    case 60: // "<" 
    case 61: // "=" 
    case 62: // ">" 
    case 94: // "^" 
    case 96: // "`" 
     return false; 
     break; 
    default: 
     return true; 
    } 
} 

처럼 함수를 선언 그럼 오늘 나에게 무언가를 가르치는 일 ^, 대한 약간의 코멘트를 추가하기위한이

onkeypress="return killKeys(event); 
+0

정규 표현식을 사용하는 것이 더 좋지만 그래도이 대체 솔루션을 공유해 주셔서 감사합니다 :-) – Debojyoti

0
<script language="javascript" type="text/javascript"> 
    function isNumberKey(evt) { 
     var charCode = (evt.which) ? evt.which : event.keyCode; 
     if (charCode != 46 && charCode > 31 && (charCode < 97 || charCode > 122) && (charCode < 65 || charCode > 96) && (charCode < 48 || charCode > 57) || charCode == 110 || charCode == 190) 
      return false; 
     return true; 
    }  
</script> 

<asp:TextBox ID="txtCompany" runat="server" onkeypress="return isNumberKey(event)" ></asp:TextBox> 
+0

코드 외에도 답변을 설명하는 텍스트를 추가 할 수 있습니까? – jonsca

관련 문제