zl程序教程

您现在的位置是:首页 >  其他

当前栏目

正则提取字符串中的手机号码/座机号码/400电话

2023-02-19 12:17:09 时间

废话不多说,直接上代码:

/// <summary>
/// 提取字符串中的电话号码(手机号码、座机号码、400电话)
/// 正则表达式提取
/// 一、手机号码:11位 ([1][3456789]\d{9})
/// 二、座机号码:3位或4位区号 [- ] 7位或8位电话号
/// 1.3位或4位区号7位或8位电话号 【0376*******、020********】 (0\d{2}\d{8})|(0\d{3}\d{7})
/// 2.3位或4位区号[- ]7位或8位电话号【0376-*******、0376 *******、020-********、020 ********】 (0\d{2}[- ]\d{8})|(0\d{3}[- ]\d{7})
/// 3.(3位或4位区号)7位或8位电话号 【(0376)*******、(020)********】 (\(0\d{2}\)\d{8})|(\(0\d{3}\)\d{7})
/// 三、400电话 【400-***-****、400*******】 (400-\d{3}-\d{4})|(400\d{7})
/// 正则表达式:([1][3456789]\d{9})|(0\d{2}\d{8})|(0\d{3}\d{7})|(0\d{2}[- ]\d{8})|(0\d{3}[- ]\d{7})|(\(0\d{2}\)\d{8})|(\(0\d{3}\)\d{7})|(400-\d{3}-\d{4})|(400\d{7})
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static List<string> GetTelephoneList(string input)
{
    //集合存放提取出来的电话号码
    List<string> list = new List<string>();
    Regex regex = new Regex(@"([1][3456789]\d{9})|(0\d{2}\d{8})|(0\d{3}\d{7})|(0\d{2}[- ]\d{8})|(0\d{3}[- ]\d{7})|(\(0\d{2}\)\d{8})|(\(0\d{3}\)\d{7})|(400-\d{3}-\d{4})|(400\d{7})");

    //Match集合,匹配成功的字符串集合
    MatchCollection collection = regex.Matches(input);

    //遍历Match集合,取出值
    string telephone;
    foreach (Match item in collection)
    {
        foreach (Group group in item.Groups)
        {
            telephone = group.Value.Trim();
            if (!string.IsNullOrEmpty(telephone))
            {
                //加上去重判断
                if (!list.Contains(telephone))
                {
                    list.Add(telephone);
                }
            }
        }
    }
    return list;
}