如何限制在文本框中输入的任何特殊字符

时间:2011-05-06 18:02:16

标签: c# asp.net regex

如何限制在文本框中输入的任何特殊字符? 我有一个文本框,用户可以在文本框中输入以验证数据库中是否存在URL。在我点击数据库之前,我想确保文本框中没有输入特殊字符

例如,如果某个用户尝试输入以下内容:  )(*&<>&*^&*^&*$%#!@#$http://www.cnn.com!@#$%^&*()

在他们粘贴或输入带有特殊字符的网址之前,我怎么能不允许进入文本框?

对此的唯一考虑是:&(&符号)是允许的,如果它位于这样的URL之间:

http://cnn.com/news/latest.html&id=1

2 个答案:

答案 0 :(得分:1)

使用文本框的KeyPress事件。在处理程序中,运行要针对e.KeyChar验证的正则表达式,如果找到无效字符,请将e.Handled设置为true。这样可以防止在框中输入字符。

如果要测试整个文本,可以连接新字符和当前Text属性,并针对该属性运行表达式。

或者,在需要验证时使用Validating事件来测试整个输入。

修改:为响应the link garykindel postedKeyPress将是比TextChanged或MaskedTextBox更好的选择,因为前者会在撤消之前触发事件更改,以及用户输入位置的混乱,以及MaskedTextBox对于黑名单字符等内容过于紧缩。

答案 1 :(得分:0)

最简单的答案是创建一种方法来剥离客户端的字符。

$('#myTextBox').keyup(function()
{
     var santizedValue = '';
     for(var j = 0; j < this.value.length; j++)
        if(this.value[j].toLower() == 'a' || this.value[j].toLower() == 'b' ... )
           sanitizedValue += this.value[j];

        //Alternatively; convert the character to integer and check the ASCII range for a-z + &

     this.value = sanitizedValue;
});

您在服务器上创建了一个类似的方法(以防客户端没有javascript或者破坏脚本)。