日期:2014-05-18  浏览次数:20450 次

关于txt文本中手机号码和电话号码过滤的问题
在txt文本中 有手机号码 也有电话号码
如 025-1111111 或者13811111111

请问 我如何将之分离出来?

------解决方案--------------------
用正则
手机
^[0-9]{11}$/
座机
^[+]{0,1}(\d){1,4}[ ]{0,1}([-]{0,1}((\d)|[ ]){1,12})+$
------解决方案--------------------
/// <summary>
/// 移动号码段前缀
/// </summary>
private static string _MobilePrefix = "134,134,135,136,137,138,139,150,151,152,157,158,159,187,188,147";

/// <summary>
/// 联通号码段前缀
/// </summary>
private static string _UnicomPrefix = "130,131,132,155,156,185,186,145";

/// <summary>
/// 电信号码段前缀
/// </summary>
private static string _TelecomPrefix = "133,153,180,182,189,1349";

/// <summary>
/// 判断是否是中国移动号码
/// </summary>
/// <param name="mobileNum">电话号码</param>
/// <returns></returns>
public static bool IsMobilePrefix(string mobileNum)
{
if (string.IsNullOrEmpty(mobileNum))
{
return false;
}
string mobileNumPrefix = mobileNum.Substring(0, 3);
if (!_MobilePrefix.Contains(mobileNumPrefix))
{
return false;
}
return true;
}
/// <summary>
/// 判断是否是中国联通号码
/// </summary>
/// <param name="mobileNum">电话号码</param>
/// <returns></returns>
public static bool IsUnicomPrefix(string mobileNum)
{
if (string.IsNullOrEmpty(mobileNum))
{
return false;
}
string mobileNumPrefix = mobileNum.Substring(0, 3);
if (!_UnicomPrefix.Contains(mobileNumPrefix))
{
return false;
}
return true;
}

/// <summary>
/// 判断是否是中国电信号码
/// </summary>
/// <param name="mobileNum">电话号码</param>
/// <returns></returns>
public static bool IsTelecomPrefix(string mobileNum)
{
if (string.IsNullOrEmpty(mobileNum))
{
return false;
}
string mobileNumPrefix = mobileNum.Substring(0, 4);
if (_TelecomPrefix.Contains(mobileNumPrefix))
{
return true;
}
mobileNumPrefix = mobileNum.Substring(0, 3);
if (!_TelecomPrefix.Contains(mobileNumPrefix))
{
return false;
}
return true;
}

/// <summary>
/// 判断手机号码
/// </summary>
/// <param name="inputMobile">手机号码</param>
/// <returns></returns>
public static bool IsMobile(string inputMobile, out string returnMsg)
{
returnMsg = string.Empty;
if (inputMobile.Length != 11)
{
returnMsg = "您填写的手机号码长度有误,手机号码必须为11位,您只输入了" + inputMobile.Length + "位。";
}
string pattern = @"^(13[0-9]|15[0-9]|18[0-9])\d{8}$";
Regex regex = new Regex(pattern);
if (regex.IsMatch(inputMobile))
{
returnMsg = "您输入的手机号码正确。";
return true;
}
else