字母数字和空格的正则表达式

时间:2012-02-28 11:20:16

标签: c#

这里我输入带空格的字母数字字符。但这个表达式失败

// Function to Check for AlphaNumeric.
public bool IsAlphaNumeric(String strToCheck)
{
    Regex objAlphaNumericPattern = new Regex(@"[a-zA-Z0-9\s]*");
    return objAlphaNumericPattern.IsMatch(strToCheck);
}

protected void Button1_Click(object sender, EventArgs e)
{
    string straddres = "2";
    straddres = TextBox1.Text;
    if (!IsAlphaNumeric(straddres.Trim()))
    {
        Label1.Text = "Error";
    }
    else
    {
        Label1.Text = "Success";
    }
}

例如:

123 abc, 23 2322 erwer

这些话应该得到统计,请告诉我表达错误的地方

例如:

@#23,#$ 34,@&* 34s 

应该让机器人满意

4 个答案:

答案 0 :(得分:3)

表达式解决了我的问题

@"^[A-Za-z0-9 ]+$"

答案 1 :(得分:0)

*替换为表达式中的+*将匹配零个字符,因此您将使用该字符匹配所有内容,甚至是空字符串。 +表示您必须至少有一个字符匹配。

您可以考虑在字符串的开头添加^,在表达式的末尾添加$以使其与整个字符串匹配,如果这是您想要的。

答案 2 :(得分:0)

\s是预定义的字符类。所有预定义的字符类在用户定义的字符类中都会失去其特殊含义。您的正则表达式将匹配字母数字或斜杠(额外的s是多余的,因为a-z将与之匹配)。

\s更改为空格([a-zA-Z 0-9]),或者如果您需要捕获任何类型的空格(不仅仅是ASCII 32),请尝试使用([a-zA-Z0-9]|\s)*

警告:\s的替代匹配也会捕获整个空白块。

答案 3 :(得分:0)

您需要将匹配值与输入字符串进行比较。

string pattern = @"[a-zA-Z0-9\s]*";
Match match = Regex.Match(str, pattern);
if (match.Value == str)
    Console.WriteLine("Valid");
else
   Console.WriteLine("Invalid");