2011-06-14 211 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」。


但如果你要代替那些空字符串,你可能 希望 ^第一。

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

給 「ABC ===」

+0

感謝您將小評論一下^,+1今天教我一些東西。 – Marty 2011-06-14 07:47:14

+0

非常感謝您的回答jcomeau_ictx。但是,我實際上嘗試過,如下所示: – Debojyoti 2011-06-14 07:51:21

2

重寫你的函數是這樣的:

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是你想要的事件趕上,而不是onKeypress。

+0

嗨shinkou,謝謝你的回答,但它不允許我在文本框中輸入多個字符。實際上,jcomeau_ictx給出的解決方案除了不能檢測到禁止字符的第一次出現之外。例如:如果我寫「asd>」,那麼我想要的是文本應該被重新格式化爲「asd」,但是這沒有發生。然而,如果我嘗試在「asd>」之後輸入「>」,那麼就會被阻止。我也希望第一次出現同樣的行爲。 – Debojyoti 2011-06-14 08:03:24

+0

@Debojyoti,我檢查過它可以在Firefox和Chrome上運行。你使用的是什麼瀏覽器? – shinkou 2011-06-14 08:08:24

+0

實際上是Shinkou,你說得對。我忘了使用onkeyup,我也相信你對正則表達式做了一些修改。不過,我非常感謝你,感謝你。 – Debojyoti 2011-06-14 08:17:11

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 2011-06-14 10:14:03

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 2012-09-24 12:34:53

相關問題