C#Regex只允许使用字母数字

时间:2011-11-15 08:53:17

标签: c# regex

我有以下正则表达式^[a-zA-Z0-9]+$,它允许使用字母数字字符。这里的问题是,如果我只输入像“897687”这样的数字字符,那么正则表达式仍然匹配。我不希望这种情况发生。应该至少有一个文本字符,它应该以文本字符开头。例如“a343”或“a98bder”或“a4544fgf343”

如果你可以帮助我提高我的正则表达式,那就太好了。

6 个答案:

答案 0 :(得分:39)

听起来像你想要的那样:

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

答案 1 :(得分:13)

如果ASCII字符在某些时候还不够,这里是Unicode版本:

^\p{L}[\p{L}\p{N}]*$

\p{L}是具有属性字母==>属性的任何Unicode代码点。来自任何语言的任何字母(即Unicode)

\p{N}是任何具有属性编号==>的Unicode代码点。来自任何语言的任何数字字符(即Unicode)

答案 2 :(得分:4)

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

应该做的伎俩!

或者,如果您希望包含所有字母数字和下划线,您可以使用:

^[a-zA-Z][\w]*$

答案 3 :(得分:2)

此函数将根据正则表达式是否匹配返回true或false,

   public static Boolean isAlphaNumeric(string strToCheck)
    {
        Regex rg = new Regex(@"^[a-zA-Z0-9\s,]*$");
        return rg.IsMatch(strToCheck);
    }

答案 4 :(得分:2)

或者比接受的答案略微冗长:

^[a-zA-Z][\w]*$

C#正则表达式有字符类指示符" \ w"对于字母数字字符,但没有字母(仅数字)的字符类,因此您必须手动指定类集[a-zA-Z]。

答案 5 :(得分:0)

这是检查字母数字的最佳解决方案,

  • 如果只是字符串 - “错误”。
  • 如果它只是整数 - “错误”。
  • 如果是字母数字 - “成功”。

    Spannable text = Build.VERSION.SDK_INT > Build.VERSION_CODE.N
    ? Html.fromHtml(htmlString, Html.FROM_HTML_MODE_LEGACY, null, null)
    : Html.fromHtml(htmlString, null, null);