我正在尝试用正则表达式解析电话号码 . 我想用这样的函数得到一个带有电话号码的字符串:
string phoneRegex = @"^([+]|00)(\d{2,12}(?:\s*-*)){1,5}$";
string formated = Regex.Match(e.Value.ToString(), phoneRegex).Value;
正如你所看到的,我正在尝试使用非捕获组(?:\ s * - *),但我做错了什么 .
预期的反应应该是:
输入(e.Value):48 123 234 344或48 123234344或48 123-234-345
输出:48123234344
在此先感谢您的任何建议 .
2 回答
这应该工作:
Regex.Match不会为你改变字符串;它会简单地匹配它 . 如果您有一个电话号码字符串,并希望通过删除不需要的字符来格式化它,您将需要使用Regex.Replace方法:
在我的示例中,电话号码是硬编码的,但它仅用于演示目的 .
作为旁注;您在上面的代码示例中使用的正则表达式假定国家/地区代码是2位数;情况可能并非如此 . 美国有一位数的代码(1),许多国家都有3位数的代码(也许有些国家的数字比这个还多?) .