乐趣区

手机号-验证-ts

记录一下 手机号验证方法

/**
 * @description: 验证手机号正确性
 * @param {string} phoneNumber 手机号
 * @return  {boolean} 是否验证通过  true| 返回运营商 - 通过 false- 不通过
 */
export const vaildPhoneNumber = (phoneNumber): string | boolean => {
  // 规则说明 2019-12-24 工信部核发 190、192、196、197 号段
  //【虚拟运营商】:170[1700/1701/1702]、162(电信),1703/1705/1706、165(移动),1704/1707/1708/1709(联通)、171、167(联通)//【卫星通信】:1740[0-5] (电信),1349(移动)
  //【物联网网号】:10648、1440 (移动),10646、146(联通),10649、1410(电信)
  //【国家工信部应急通信】:1740[6-9],1741[0-2]

  // 所以整理分类号段
  // 手机号码: 13[0-9], 14[5,6,7,8,9], 15[0-3, 5-9], 16[2,5,6,7], 17[0-8], 18[0-9], 19[0-3, 5-9]
  // 移动号段: 13[4-9],147,148,15[0-2,7-9],165,170[3,5,6],172,178,18[2-4,7-8],19[5,7,8]
  // 联通号段: 130,131,132,145,146,155,156,166,167,170[4,7,8,9],171,175,176,185,186,196
  // 电信号段: 133,149,153,162,170[0,1,2],173,174[0-5],177,180,181,189,19[0,1,3,9]
  // 广电号段: 192
  const regMOBILE = /^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/;
  const regCNMobilE = /^((13[4-9])|(14[7-8])|(15[0-2,7-9])|(165)|(178)|(18[2-4,7-8])|(19[5,7,8]))\d{8}|(170[3,5,6])\d{7}$/;
  const regCNUnicom = /^((13[0-2])|(14[5,6])|(15[5-6])|(16[6-7])|(17[1,5,6])|(18[5,6])|(196))\d{8}|(170[4,7-9])\d{7}$/;
  const regCNTelecom = /^((133)|(149)|(153)|(162)|(17[3,7])|(18[0,1,9])|(19[0,1,3,9]))\d{8}|((170[0-2])|(174[0-5]))\d{7}$/;
  const regCNBroadcastingNetwork = /^((192))\\d{8}$/;

  if (regCNMobilE.test(phoneNumber)) return '中国移动';

  if (regCNUnicom.test(phoneNumber)) return '中国联通';

  if (regCNTelecom.test(phoneNumber)) return '中国电信';

  if (regCNBroadcastingNetwork.test(phoneNumber)) return '中国广电';

  if (regMOBILE.test(phoneNumber)) return true;

  return false;
};
退出移动版