Adam Higgins
Adam Higgins

Reputation: 754

How do I use regex to validate my string?

I'm trying to use a method to validate a string that has two capital letters at the start and 3 digits after that. The one I am writing at the minute is:

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";
}

(Also I would like to know if the "2" in:

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

means 2 times or three times as c# uses index of 0.)

Any help at all is appreciated.

Upvotes: 1

Views: 1072

Answers (1)

Rafael Saraiva
Rafael Saraiva

Reputation: 948

please try:

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

If you just want to find an expression starting with 2 capital letters followed by 3 digits you should not put an ending limiter, just the starting.

The 2 means 2 times.

Upvotes: 2

Related Questions