C# 提取字符串里的電話號碼

近日收到客戶提的需求,想把字符串中的電話號碼提取出來,讓用戶看到時可以直接撥打電話。
遂想到了用正則提取,然后再進行替換,加上超鏈接。
特此記錄提取方法,備忘。
以下是提取電話的代碼,兼容11位手機號、3位或4位區(qū)號+8位電話號、400電話的兩種寫法(400-ddd-dddd、400ddddddd)。如有其他格式的電話號碼需要提取,請自行添加正則規(guī)則。

/// <summary>
/// 提取字符串中的電話號
/// * 兼容11位手機號、3位或4位區(qū)號+8位電話號、400電話的兩種寫法(400-ddd-dddd、400ddddddd)
/// </summary>
/// <param name="input">輸入的字符串</param>
/// <returns></returns>
public static List<string> GetTelephoneList(string input)
{
    //集合存放提取出來的電話號碼
    List<string> list = new List<string>();
    
    /*
     * 正則表達式提取
     * 分為五種格式,能兼容11位手機號、3位或4位區(qū)號-7位或8位電話號、400電話的兩種寫法(400-ddd-dddd、400ddddddd)
     */
    Regex regex = new Regex(@"(1[3|4|5|6|7|8|9]\d{9})|(0\d{2,3}-\d{7,8})|(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();
            //偶爾會出現(xiàn)重復提取,所以加了去重判斷
            if (!string.IsNullOrEmpty(telephone) && !list.Contains(telephone))
            {
                list.Add(telephone);
            }
        }
    }

    return list;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容