js怎么判断是否为手机号?js格式校验方法

数据格式正确与否是表单填写不可避免的一个流程,现整理一些较为常用的信息格式校验方法。

判断是否为手机号码

js 复制代码
// 判断是否为手机号码
function isPhoneNumber(phone) {
  return /^[1]\d{10}$/.test(phone)
}

判断是否为移动手机号

js 复制代码
function isChinaMobilePhone(phone) {
  var reg = new RegExp(/^(13[456789]|147|15[012789]|178|18[23478]|198)[0-9]{8}$/)
  return reg.test(phone)
}

判断是否为座机

js 复制代码
function isTelephone(phone) {
  return /^[0][0-9]{2,3}[-]?[0-9]{6,9}$/.test(phone)
}

身份证校验

js 复制代码
// 身份证校验 简单校验
function checkIDCardSimple(code) {
  return /^([0-9a-zA-Z]{15}|[0-9a-zA-Z]{18})$/.test(code)
}

// 身份证校验 加强校验
function checkIDCard(code) {
  // 校验非空
  if (!code) {
    return false
  }
  // 校验长度
  if (code.length != 15 && code.length != 18) {
    return false
  }
  // 定义判别用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)
  //假设18位身份证号码:41000119910101123X  410001 19910101 123X
  //^开头
  //[1-9] 第一位1-9中的一个      4
  //\\d{5} 五位数字           10001(前六位省市县地区)
  //(18|19|20)                19(现阶段可能取值范围18xx-20xx年)
  //\\d{2}                    91(年份)
  //((0[1-9])|(10|11|12))     01(月份)
  //(([0-2][1-9])|10|20|30|31)01(日期)
  //\\d{3} 三位数字            123(第十七位奇数代表男,偶数代表女)
  //[0-9Xx] 0123456789Xx其中的一个 X(第十八位为校验值)
  //$结尾

  //假设15位身份证号码:410001910101123  410001 910101 123
  //^开头
  //[1-9] 第一位1-9中的一个      4
  //\\d{5} 五位数字           10001(前六位省市县地区)
  //\\d{2}                    91(年份)
  //((0[1-9])|(10|11|12))     01(月份)
  //(([0-2][1-9])|10|20|30|31)01(日期)
  //\\d{3} 三位数字            123(第十五位奇数代表男,偶数代表女),15位身份证不含X
  //$结尾
  
  var reg = new RegExp(/(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/)
  var matches = reg.test(code)
  if (matches) {
    // 15位的身份证,直接返回合法
    if (code.length == 15) {
      return true
    }
    // 18位的进一步校验
    try {
      // TODO:
    } catch(e) {
      console.error(e)
      return false
    }
    
  }
  return matches
}

身份证校验15位

js 复制代码
function checkIDCard15(code) {
  return /^([0-9a-zA-Z]{15})$/.test(code)
}

身份证校验18位

js 复制代码
function checkIDCard18() {
  return /^([0-9a-zA-Z]{18})$/.test(code)
}

户口簿校验

js 复制代码
// 户口簿校验 9位数字
function checkHuKouBook(code) {
  return /^\d{9}$/.test(code)
}

护照校验

js 复制代码
// 护照校验
function checkPassport(code) {
  return /^((1[45]\d{7})|(G\d{8})|(P\d{7})|(S\d{7,8}))?$/.test(code)
}

军官证校验

js 复制代码
// 军官证校验
// 规则:军/兵/士/文/职/广/(其他中文) + "字第" + 4到8位字母或数字 + "号"
// 示例:军字第2002488号, 士字第P011816X号
function checkOfficerCard(code) {
  return /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/.test(code)
}

驾驶证校验

js 复制代码
// 驾驶证校验 12位数字
function checkDriveCard(code) {
  return /^\d{12}$/.test(code)
}

台湾居民来往大陆通行证

js 复制代码
// 台湾省居民来往大陆通行证
// 规则:新版8位或18位数字,旧版10位数字 + 英文字母
// 示例:12345678 或 1234567890B
function checkTwCard(code) {
  return /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/.test(code)
}

港澳居民来往内地通行证

js 复制代码
// 港澳居民来往内地通行证
// 规则:H/M + 10位或6位数字
// 示例:H1234567890
function checkHMCard(code) {
  return /^[HMhm]{1}([0-9]{10}|[0-9]{8})$/.test(code)
}
相关推荐
开开心心就好9 分钟前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
起个名字费劲死了18 分钟前
Halcon学习一:骰子识别
前端·python·学习
大江东去浪淘尽千古风流人物22 分钟前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速
এ慕ོ冬℘゜25 分钟前
JS 事件循环、宏任务微任务:单线程底层原理 + 执行顺序
开发语言·javascript·ecmascript
其实防守也摸鱼27 分钟前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php
web打印社区31 分钟前
Lodop排障总纲-常见报错一张表
开发语言·前端·javascript·chrome·websocket
李剑一44 分钟前
为什么几乎所有的知名开源项目都是外国人写的?
前端·ai编程·deepseek
小郎君6581 小时前
(一)为什么表单需要第三种状态:disabled、readonly 与纯文本展示
前端·vue.js
计算机魔术师1 小时前
1.4万亿没人接,OpenAI自己砍了1500亿
前端
程序员大阳1 小时前
副队长JavaScript教程(56)-DOM之表单操作
javascript·dom·表单操作