【问题标题】:How do I use regex to validate my string?如何使用正则表达式来验证我的字符串?
【发布时间】:2015-07-15 19:39:21
【问题描述】:

我正在尝试使用一种方法来验证开头有两个大写字母和之后有 3 个数字的字符串。我现在写的是:

static void Main(string[] args)
{
    Console.WriteLine("Enter stock quantity:");
    string qty = Console.ReadLine();

    string code = enterStockCode();
}

static string enterStockCode()
{
    string[] pLetters = new string[] { "BL", "FS", "HJ", "PX" };

    bool isValid = false;
    while (isValid == false)
    {
        Console.WriteLine("Enter stockcode:");
        string stockCode = Console.ReadLine();

        char[] stockCodeSplit = stockCode.ToCharArray();
        var vLetters = (stockCodeSplit[0] + stockCodeSplit[1]);
        var vNumbers = (stockCodeSplit[2] + stockCodeSplit[3] + kCodeSplit[4]);
        // I'd like to know if there is a better way of splitting this string
        // by using regular expressions or another way.


        foreach (var Letter in pLetters)
        {
            if (vNumbers.ToString() == Letter)
            {
                if (Regex.Match(vNumbers.ToString(), @"^\d[0-9]{2}$").Success)
                    return stockCode;
                Console.WriteLine("Invalid stock code");
            }
        }
    }

    return "Invalid";
}

(另外我想知道“2”是否在:

@"^\d[0-9]{2}$"

表示c#使用索引为0的2倍或3倍。)

感谢任何帮助。

【问题讨论】:

  • 你试过了吗^[A-Z]{2}\d{3}$
  • 您是否查看过任何在线 RegEx 文档和解释/示例..?也看看一些 Char.IsDigit 函数,我认为这在我看来会更容易或 string.Contains 方法
  • {2} 表示两次。你的代码有什么问题?
  • 您可以只针对^(BL|FS|HJ|PX)[0-9]{3}$ 进行验证,而不必费心拆分等。
  • 而对于“拆分字符串”(没有正则表达式),您可以使用多个.SubString()

标签: c# regex string methods


【解决方案1】:

请尝试:

^[A-Z]{2}\d{3}

如果您只想找到以 2 个大写字母后跟 3 个数字开头的表达式,则不应放置结尾限制符,而应仅放置开头。

2 表示 2 次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多