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

我一直在寻找一下如何确定一个以数字开头的字符串。 我遇到了一个正则表达式声明’/ ^ \ d /’我可以确认是否以数字开头。 但是我似乎无法在下面的代码中使用它。 任何人都可以指出我在声明中出错的地方(Regex.Match(info,“/ ^ \ d /”))? 谢谢!

//String attachbody is the attachment body from an email i 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(); } } 

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

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

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

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

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

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

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

 if (info.Length > 0 && char.IsDigit(info[0])) { ... } 

如果你想使用正则表达式,取出//所以它只是Regex.IsMatch(info,@"^\d")

它是您提供给Regex.Match的字符串格式。

正确的格式是:

 Regex.Match(info,@"^\d") 

@表示转义字符(如反斜杠)被视为普通字符。 如果没有它,你的正则表达式将需要"^\\d"

你的正则表达式是错的。 .Net不使用perl风格的正则表达式。 正确的表达式是@“^ \ d”。

如果你不打算使用.Match中的MatchCollection做任何事情,你应该使用Regex.IsMatch(…):

 RegEx.IsMatch(info, @"^\d") 

如果您只是试图找出字符串是否以数字开头。 像上面一样,你可以使用正则表达式。 只需使用Substring,删除第一个字符并测试它是否为数字。

现在,如果你试图删除整个数字,那么我会将字符串转换为char数组,并测试字符。

伪字符串s =“”对于字符中的每个c {如果c是数字然后s + = c,则退出}将s转换为整数,你得到字符串开头的数字。