正则表达式11位数字串捕获

时间:2012-01-22 14:42:22

标签: c# regex

String pattern = @"^(\d{11})$";
String input = "You number is:11126564312 and 12234322121 \n\n23211212345";
Match match = Regex.Match(input,pattern);

从上面的代码中我打算捕获上面文本中出现的11位数字符串但匹配.Success总是返回false。任何想法。

3 个答案:

答案 0 :(得分:4)

这是因为您使用了^$

解释:正则表达式的含义是“匹配任何包含从头到尾的11位数字的字符串”。字符串You number is:11126564312 and 12234322121 \n\n23211212345不是这样的字符串。 01234567890就像那个字符串。

您需要什么:您需要正则表达式匹配任何包含11位数的字符串。 开始结束被省略。 ^$用于此目的。所以你需要这个正则表达式。

String pattern = @"(\d{11})";

由于要捕获的子模式包含整个正则表达式,因此根本不需要()。只是正则表达生病了。

String pattern = @"\d{11}";

答案 1 :(得分:3)

String pattern = @"^(\d{11})$";
String input = "11126564312" 
Match match = Regex.Match(input,pattern);

将通过。

您的正则表达式指定它必须是11个数字

^ =以
开头 $ =以

结尾

如果您想检查包含 11个数字是否将正则表达式更改为

String pattern = @"\d{11}";

答案 2 :(得分:3)

您的正则表达式匹配一个字符串,该字符串具有正好11个数字,但之前,之间或之后没有文本。这就是为什么你不在这里得到任何比赛。

要匹配字符串中任意位置的11位数,只需使用:

string pattern = @"\d{11}";