如何检查字符串是否只是数字和字母数字而不是字符串

本文关键字:字符串 数字 是否 何检查 检查 | 更新日期: 2023-09-27 18:18:37

我有一个示例数据,其中必须确定字符串是数字还是字母数字,但不是简单的字符串。例如:

my data is:
123XY
12346
WEPXY

对前两个(字母数字和数字(返回 true 并对纯字符串返回 false 的条件是什么?

如何检查字符串是否只是数字和字母数字而不是字符串

使用正则表达式,例如:

([0-9]+[a-zA-Z]+)|([0-9]+)

编辑:嗯,那有各种各样的问题...我无法用正则表达式本身解决这个问题,但能够创建一个运行良好的函数:

private bool HasLettersAndNumbersOnly(string value)
{
    return !(Regex.IsMatch(value, @"^[a-zA-Z]+$") || Regex.IsMatch(value, @"[^a-zA-Z0-9]"));
}

测试:

  • 123XY : 真
  • 12346:真
  • XY123 : 真
  • X123Y : 真
  • x2c3g : 真
  • 2c3v4 : 真
  • 5c1=+ : 假
  • WEPXY : 假
  • 您可以使用仅允许 A-Z、a-z 和 0-9 的正则表达式,并使用正前瞻要求至少一个数字:

    bool isValid = Regex.IsMatch(input, @"^(?=.*'d)[A-Za-z'd]+$");
    

    测试:

    "123XY" : true
    "12346" : true
    "WEPXY" : false
    "1abcd" : true
    "abcd1" : true
    "ab2cd" : true
    "1abc2" : true
    "1"     : true
    "a"     : false
    "1a"    : true
    "a1"    : true
    ""      : false
    
    Regex r = new Regex(@"'d");
    string[] testData = new string[] { "123XY", "12346", "WEPXY" };
    foreach (var s in testData)
    {
        bool isMatch = r.IsMatch(s);
        Console.WriteLine("Data: {0}, Is match: {1}", s, isMatch);
    }
    Console.ReadLine();
    

    基本上你只需要检查字符串是否包含一个数字,对吧? 正则表达式 '''d' 匹配任何数字。

    上面的代码打印出来:

    数据:123XY,匹配:真
    数据:12346,匹配:真
    数据:WEPXY,是否匹配:假

    如果你想要一个方法来做到这一点,使用这样的东西,你可以检查任何一个,让它返回一个 True 或 false

    public static bool IsOnlyNumbers(string strValidateString, bool boolCheck4LetterOrDigit)
    {
        bool boolValidatePassed = false;
        switch (boolCheck4LetterOrDigit)
        {
          case  true:
            {
                if (strValidateString.All(Char.IsDigit))
                {
                    boolValidatePassed = true;
                }
                break;
            }
          case false:
            {
                if (strValidateString.All(Char.IsLetter))
                {
                    boolValidatePassed = false;
                }
                break;
            }
        }
        return boolValidatePassed;
    }