C#字符串以正则数字开头

too*_*are 17 c# regex string digits

我一直在寻找一段时间来弄清楚如何确认字符串以数字开头.我遇到了一个正则表达式'/ ^\d /',我可以确认如果以数字开头.但是我似乎无法在下面的代码中使用它.我在声明中哪里出错了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();
    }
}
Run Code Online (Sandbox Code Playgroud)

示例数据(制表符分隔):
TicketID状态URL InitCats PostRevCats ListNumClosed 555555已关闭 http://5555555.com/searcho 恶意站点55555

Dar*_*rov 53

你的正则表达式是错的./.../是用于定义正则表达式的javascript约定.在C#中尝试这样:

if (Regex.IsMatch(info, @"^\d"))
Run Code Online (Sandbox Code Playgroud)

另请注意,您应该使用返回布尔值的IsMatch方法,否则您的代码甚至无法编译.

如果你想匹配字符串以一个或多个数字开头:

if (Regex.IsMatch(info, @"^\d+"))
Run Code Online (Sandbox Code Playgroud)


age*_*t-j 28

你不需要正则表达式.尝试

if (info.Length > 0 && char.IsDigit(info[0]))
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

如果你想使用正则表达式,那就取消//它吧Regex.IsMatch(info,@"^\d").

  • 这是当您使用正则表达式不支持的可移植库时的解决方案。如果有正则表达式支持,最好考虑性能方面的问题 (2认同)