从格式化字符串中提取电话号码正则表达式

时间:2012-11-16 18:57:23

标签: c# .net regex phone-number

鉴于电话号码都采用以下格式:

(999) 999-9999 Ext.9999"

我想把所有东西都归还给第二个空间,例如:

(999) 999-9999

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

如果您的字符串位于s:

   string s = "(999) 999-9999 Ext.9999";
   string number = s.Split(" Ext")[0];

答案 1 :(得分:2)

如果您想要完美匹配,可以使用以下表达式:

string s = "(999) 999-9999 Ext.9999";
Match m = Regex.Match(s, @"(?<nr>\([0-9]{3}\)\s+[0-9]{3}\-[0-9]{4})");
if (m.Groups["nr"].Success)
{
    Console.WriteLine(m.Groups["nr"].Value);
}

答案 2 :(得分:1)

不要使用正则表达式。使用Split()。然后将前两个元素重新连接在一起。

答案 3 :(得分:1)

s包含完整的刺痛。如果真的“全部采用此格式”完全,那么您可以只取前14个字符:

string number = s.SubString(0, 14);

或者更灵活,更安全:

var idx = s.IndexOf(" Ext");
//good idea to check if idx == -1
string number = s.SubString(0, idx);

答案 4 :(得分:0)

看看这个:

    string s = "(999) 999-9999 Ext.9999";
    string phonenumber1 = Regex.Replace(s, @"(?i)\s*ext\.\d+", "");