String pattern = @"^(\d{11})$";
String input = "You number is:11126564312 and 12234322121 \n\n23211212345";
Match match = Regex.Match(input,pattern);
从上面的代码中我打算捕获上面文本中出现的11位数字符串但匹配.Success总是返回false。任何想法。
答案 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}";