C# string starts with a number regex

toosweetnitemare picture toosweetnitemare · Jun 16, 2011 · Viewed 52.3k times · Source

I've been searching around for a little while to figure out how to confirm a string begins with a number. I came across a regex statement '/^\d/' which I can confirm says if starts with digit. However I can not seem to get it to work in the code below. Where did I went wrong in the statement if(Regex.Match(info,"/^\d/"))?

//String attachbody is the attachment body from an email C read into a string
string[] data = Regex.Split(attachbody, "\n");

foreach (String info in data)
{
    if (Regex.Match(info,"/^\d/"))
    {
        string[] tabbedHeaderData = Regex.Split(info, "\t");
        TicketID = tabbedHeaderData[0].ToString();
        Status = tabbedHeaderData[1].ToString();
        URL = tabbedHeaderData[2].ToString();
        InitCats = tabbedHeaderData[3].ToString();
        PostRevCats = tabbedHeaderData[4].ToString();
        ListNumClosed = tabbedHeaderData[5].ToString();

        Console.WriteLine(TicketID);
        Console.WriteLine(Status);
        Console.WriteLine(URL);
        Console.WriteLine(InitCats);
        Console.WriteLine(PostRevCats);
        Console.WriteLine(ListNumClosed);
        Console.ReadLine();
    }
}

example data (tab delimited):
TicketID Status URL InitCats PostRevCats ListNumClosed 555555 Closed http://5555555.com/searcho Malicious Sites 55555

Answer

Darin Dimitrov picture Darin Dimitrov · Jun 16, 2011

Your regex is wrong. /.../ is javascript convention for defining regular expressions. Try like this in C#:

if (Regex.IsMatch(info, @"^\d"))

Also notice that you should use the IsMatch method which returns boolean or your code won't even compile.

And if you wanted to match that the string starts with one or more digits:

if (Regex.IsMatch(info, @"^\d+"))