C# - 仅包含字母和数字的文本框

时间:2013-11-26 17:07:14

标签: c# regex winforms textbox

如何将文本框限制为仅接受数字和字母? 它甚至不应该允许空格或类似“!”,“?”,“/”之类的东西。 只有a-z,A-Z,0-9

试过这个并且根本不起作用

if (System.Text.RegularExpressions.Regex.IsMatch(@"^[a-zA-Z0-9\_]+", txtTag.Text))
{
    txtTag.Text.Remove(txtTag.Text.Length - 1);
}

甚至不确定txtTag.Text.Remove(txtTag.Text.Length - 1);是否应该存在,因为它会导致应用程序崩溃。

4 个答案:

答案 0 :(得分:6)

你不需要正则表达式:

        textBox1.Text = string.Concat(textBox1.Text.Where(char.IsLetterOrDigit));

这将删除所有非字母或数字的内容,并且可以放在TextChanged事件中。基本上,它获取文本,将其分成字符,只选择字母或数字。之后,我们可以将它连接回一个字符串。

另外,如果您想将插入符号放在文本框的末尾(因为更改文本会将其位置重置为0),您还可以添加textBox1.SelectionStart = textBox1.Text.Length + 1;

答案 1 :(得分:1)

我的想法是你可以改变该控件的 KeyPressed TextChanged 事件,以检查输入的字符是数字还是字母。例如,要检查文本框中添加的字符,您可以执行以下操作:

myTextbox.KeyPress += new KeyPressEventHandler(myTextbox_KeyPress);



void myTextbox_KeyPress(object sender, KeyPressEventArgs e)
{
    if(e.KeyChar >= Keys.A && e.KeyChar <= Keys.Z)

    // you can then modify the text box text here

答案 2 :(得分:1)

试试这个

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = !char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar)
             && !char.IsSeparator(e.KeyChar) && !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
    }

答案 3 :(得分:-1)

首先,请查看this article以获取相关信息。

我认为您在客户端应该做的是在相应的HTML中添加pattern属性。

<input type="text" name="foo" pattern="[a-zA-Z0-9_]" title="Please input only letters and numbers">

相关问题