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

本文关键字:数字 许使用 C#Regex | 更新日期: 2023-09-27 18:14:31

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

如果你能帮我改进我的正则表达式,那就太好了。

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

听起来像你想要的:

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

解释

^在线路开始时断言位置

匹配下面列表中的单个字符[a-zA-Z]

»a-z在a(索引97(和z(索引122(之间的单个字符(区分大小写(

»A-Z在A(索引65(和Z(索引90(之间的单个字符(区分大小写(

匹配下面列表中的单个字符[a-zA-Z0-9]*

*量化器--在零次和无限次之间匹配,尽可能多次,根据需要反馈(贪婪(

a-z在a(索引97(和z(索引122((区分大小写(之间范围内的单个字符

A-Z在A(索引65(和Z(索引90((区分大小写(之间的单个字符

0-9介于0(索引48(和9(索引57(之间的单个字符(区分大小写(

$在一行的末尾断言头寸

演示

为了防止ASCII字符在某些时候不够,这里有Unicode版本:

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

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

'p{N}是任何具有属性number的Unicode代码点==>任何语言(即Unicode(的任何数字字符

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

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

应该这么做!

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

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

或者比公认的答案略不详细:

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

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

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

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

    if (System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[a-zA-Z]") && 
        System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[0-9]")      
    {
        // Success - It is alphanumric
    }
    else   
    {
        // Error - It is not alphanumric
    }