正则表达式,不允许某些特殊字符

时间:2011-06-14 07:39:45

标签: javascript regex

我想写一个正则表达式,允许使用字母数字值和特殊字符,除了这里提到的''','^','=',''','<','>','| “我对此很新,并没有真正了解如何做到这一点。我正在尝试下面的事情:

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();
     }
   }
}

我在keypress事件上调用了这个函数:

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

但它没有按预期工作。我的文本框中的值可以是字母数字和除上述之外的任何特殊字符。有人可以帮我这个吗?

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

/[^`^="<>|]/应匹配除这些字符之外的所有内容。第一个^表示“除了以下字符之外的任何东西”。

<小时/> 但是如果你打算用空字符串替换它们,你可能首先想要^

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

给出“abc ===”

答案 2 :(得分: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);

答案 3 :(得分: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>