我必须找到一个字符串中的所有电话号码。
我是这样做的(我简化的c#testcode):
const string testString = "+39702937311";
var m = new Regex("(?<telephonenumber>^\\+?(\\d[\\d-. ]+)?(\\([\\d-. ]+\\))?[\\d-. ]+\\d$)").Matches(testString);
foreach (Match match in m)
{
var nr = match.Groups["telephonenumber"].Value;
Debug.WriteLine(nr);
foreach (Capture capture in match.Captures)
{
Debug.WriteLine("Index={0}, Value={1}", capture.Index, capture.Value);
}
}
它起作用,当字符串本身是电话号码时。但如果字符串是包含电话号码的较长字符串,则它找不到电话号码。
所以,如果我按
进行测试const string testString = "Hello! This is a telephone number: +39702937311 You should call it";
它没有找到+39702937311作为电话号码。
我该怎么办?谢谢!
答案 0 :(得分:1)
(?<telephonenumber>^\\+?(\\d[\\d-. ]+)?(\\([\\d-. ]+\\))?[\\d-. ]+\\d$)
^ ^
指示的符号是行边界匹配器。如果你想用这个数学单词,你需要一个单词边界匹配器。
将^
和$
替换为\b
,表示您希望匹配单词而不是一行。