正则表达式从字符串中完全匹配11位电话号码,并从c#中的匹配中删除连字符(-)

时间:2018-11-14 11:47:01

标签: c# .net regex winforms

我正在用C#Windows窗体创建一个文本解析器,我想标识一个从0开始的带有-分隔符的11位电话号码,例如0341-2239548或021-34223311应该转换为03412239548和02134223311分别使用Regex.Match。我找不到相关的正则表达式,有人可以帮我吗?

string [] RemoveCharacter = {“ \”“,”(“,”)“,” / =“,” /“,”:-“,”:“,”;“,”-“}; < / p>

        foreach (string word in RemoveCharacter)
        {
            s = s.Replace(word, " ");
        }

在删除这些字符后,电话号码也用空格隔开,我不希望仅在电话号码上发生这种情况。

2 个答案:

答案 0 :(得分:2)

您可以在正则表达式下面使用来删除电话号码中的所有连字符和所有其他非数字字符

string pattern = @"\b([\-]?\d[\-]?){11}\b";

Regex rgx = new Regex(pattern);

var sentence = "This is phone number 0341-2239548 and 021-34223311";

var matches = rgx.Matches(sentence);

foreach (Match match in matches)
{
    string replacedValue = Regex.Replace(match.Value, @"[^0-9]", "");
    sentence = sentence.Replace(match.Value, replacedValue);
}

请参见 demo

答案 1 :(得分:0)

如果您有这样的字符串,只需移除分隔符即可。您不需要正则表达式:

string nr = "0154-1452146";
nr = nr.Replace("-", "");
Console.WriteLine(nr);