限制文本框仅在Windows 8商店应用程序中接受数字和字母

时间:2014-05-20 07:01:34

标签: c# regex

我是编程新手,我试图创建一个只接受字母和数字的文本框。我已经搜索了解决方案,但我无法找到我想要的内容。这是我到目前为止所做的:

private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == VirtualKey.Space)
        {
            e.Handled = true;
        }
        var regex = new Regex(@"[^a-zA-Z0-9\s]");
        if (regex.IsMatch(e.Key.ToString()))
        {
            e.Handled = true;
        }
    }

我可以删除正则表达式的数字以防止用户输入特殊字符,但这也会限制他们输入数字。此文本框将是Windows 8商店应用程序的一部分,我正在使用C#。希望有人可以帮助我。谢谢!

编辑:

我必须放弃限制用户在文本框中输入特殊字符,因为我没有接近它。我做的是我使用了我的第一个代码,但有一些变化。

private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == VirtualKey.Enter)
        {
            var regex = new Regex(@"[^a-zA-Z0-9\s]");
            if (regex.IsMatch(TB1.Text))
            {
                t1.Text = "Can't contain special characters.";
            }
        }

    }

而不是在" IsMatch"中使用测试中的按键。我在文本框中使用了文本。 if if语句将过滤文本框中是否存在除数字和字母之外的其他字符,因此我创建了一个文本块,用于评论文本框中是否有特殊字符。

3 个答案:

答案 0 :(得分:1)

如果您想使用 Regex ,请使用以下正则表达式来匹配。

^[a-zA-Z0-9]*$

使用示例:

Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString))
{
      ...
}

答案 1 :(得分:0)

我之前的回答是不正确的,因为我在VirtualKey如何工作方面犯了一个错误(它不是char值)。

虚拟键具有0到9的任何数字的定义值,小写字母A(a)和大写字母A(A)具有相同的数字,所以如果我首先引导您走错方向,我很抱歉。

if(e.Key >= VirtualKey.Number0 && e.Key <= VirtualKey.Z) e.Handled = false;

此代码应检查您的键值是否高于或等于Number0(48)的值且低于或等于Z | z(90)。

您可以阅读有关VirtualKey here

的更多信息

答案 2 :(得分:0)

在文本框的KayPress事件中输入以下行。它不允许用户输入任何alphabate或任何数字。只允许符号输入:

 e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ? false:true;

示例代码:

        private void yourTextBoxName_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ?false:true;
        }