正则表达式匹配模式

时间:2010-12-13 10:41:21

标签: c# regex

我需要一个c#的正则表达式,它可以匹配以下模式

  

abc1abcd
   1abcdefg
  的 abcdefg1

基本上我的表达式应该至少有一个数字,最小尺寸是8个字符,包括数字。 如果可能,还要解释正则表达式。

3 个答案:

答案 0 :(得分:3)

我可能会检查两个陈述。只需检查长度,例如

string.Length > 7

然后确保此正则表达式可以找到匹配...

[0-9]

答案 1 :(得分:3)

您可以使用look-ahead assertion来验证长度,然后向前搜索数字,这样:

(?=.{8}).*[0-9]

我们预测8个字符,如果成功,那么我们实际上会尝试匹配“任何内容,后跟数字”。

但实际上,不要这样做。只需明确检查长度即可。它更加清晰。

答案 2 :(得分:2)

您的正则表达式模式应该是:\d+(匹配1个或更多数字)。对于您的示例,最好不要使用正则表达式确定最小长度,因为您关心的是它至少有一个数字且至少为8个字符

Regex regEx = new Regex(@"\d+");
isValid = regEx.Match(myString).Success && myString.Length >= 8;

模式\d[0-9]相同,+符号表示at least one of。字符串前面的@符号是为了试图逃避\d

正如El Ronnoco在评论中所提到的,只有\d符合您的要求。了解\d+对于更复杂的模式非常有用,你需要在某些字符串之间插入一些数字等。

:我刚读过一些我不知道的东西。 \d匹配Unicode number, decimal digit类别中的任何字符,而不仅仅是[0-9]。如果您只想要任何数字,请注意一些事项。否则El Ronnoco对你的模式[0-9]的回答就足够了。