123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- function isValidPhone(str) {
- var myreg = /^[1][0-9][0-9]{9}$/;
- //var myreg = /^1\d{10}$/;
- if (!myreg.test(str)) {
- return false;
- } else {
- return true;
- }
- }
- var idCardNoUtil = {
- /*省,直辖市代码表*/
- provinceAndCitys: {
- 11: "北京",
- 12: "天津",
- 13: "河北",
- 14: "山西",
- 15: "内蒙古",
- 21: "辽宁",
- 22: "吉林",
- 23: "黑龙江",
- 31: "上海",
- 32: "江苏",
- 33: "浙江",
- 34: "安徽",
- 35: "福建",
- 36: "江西",
- 37: "山东",
- 41: "河南",
- 42: "湖北",
- 43: "湖南",
- 44: "广东",
- 45: "广西",
- 46: "海南",
- 50: "重庆",
- 51: "四川",
- 52: "贵州",
- 53: "云南",
- 54: "西藏",
- 61: "陕西",
- 62: "甘肃",
- 63: "青海",
- 64: "宁夏",
- 65: "新疆",
- 71: "台湾",
- 81: "香港",
- 82: "澳门",
- 91: "国外"
- },
- /*每位加权因子*/
- powers: ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"],
- /*第18位校检码*/
- parityBit: ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"],
- /*性别*/
- genders: {
- male: "男",
- female: "女"
- },
- /*校验地址码*/
- checkAddressCode: function (addressCode) {
- var check = /^[1-9]\d{5}$/.test(addressCode);
- if (!check) return false;
- if (idCardNoUtil.provinceAndCitys[parseInt(addressCode.substring(0, 2))]) {
- return true;
- } else {
- return false;
- }
- },
- /*校验日期码*/
- checkBirthDayCode: function (birDayCode) {
- var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode);
- if (!check) return false;
- var yyyy = parseInt(birDayCode.substring(0, 4), 10);
- var mm = parseInt(birDayCode.substring(4, 6), 10);
- var dd = parseInt(birDayCode.substring(6), 10);
- var xdata = new Date(yyyy, mm - 1, dd);
- if (xdata > new Date()) {
- return false; //生日不能大于当前日期
- } else if ((xdata.getFullYear() == yyyy) && (xdata.getMonth() == mm - 1) && (xdata.getDate() == dd)) {
- return true;
- } else {
- return false;
- }
- },
- /*计算校检码*/
- getParityBit: function (idCardNo) {
- var id17 = idCardNo.substring(0, 17);
- /*加权 */
- var power = 0;
- for (var i = 0; i < 17; i++) {
- power += parseInt(id17.charAt(i), 10) * parseInt(idCardNoUtil.powers[i]);
- }
- /*取模*/
- var mod = power % 11;
- return idCardNoUtil.parityBit[mod];
- },
- /*验证校检码*/
- checkParityBit: function (idCardNo) {
- var parityBit = idCardNo.charAt(17).toUpperCase();
- if (idCardNoUtil.getParityBit(idCardNo) == parityBit) {
- return true;
- } else {
- return false;
- }
- },
- /*校验15位或18位的身份证号码*/
- checkIdCardNo: function (idCardNo) {
- //15位和18位身份证号码的基本校验
- var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo);
- if (!check) return false;
- //判断长度为15位或18位
- if (idCardNo.length == 15) {
- return idCardNoUtil.check15IdCardNo(idCardNo);
- } else if (idCardNo.length == 18) {
- return idCardNoUtil.check18IdCardNo(idCardNo);
- } else {
- return false;
- }
- },
- //校验15位的身份证号码
- check15IdCardNo: function (idCardNo) {
- //15位身份证号码的基本校验
- var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
- if (!check) return false;
- //校验地址码
- var addressCode = idCardNo.substring(0, 6);
- check = idCardNoUtil.checkAddressCode(addressCode);
- if (!check) return false;
- var birDayCode = '19' + idCardNo.substring(6, 12);
- //校验日期码
- return idCardNoUtil.checkBirthDayCode(birDayCode);
- },
- //校验18位的身份证号码
- check18IdCardNo: function (idCardNo) {
- //18位身份证号码的基本格式校验
- var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
- if (!check) return false;
- //校验地址码
- var addressCode = idCardNo.substring(0, 6);
- check = idCardNoUtil.checkAddressCode(addressCode);
- if (!check) return false;
- //校验日期码
- var birDayCode = idCardNo.substring(6, 14);
- check = idCardNoUtil.checkBirthDayCode(birDayCode);
- if (!check) return false;
- //验证校检码
- return idCardNoUtil.checkParityBit(idCardNo);
- },
- formateDateCN: function (day) {
- var yyyy = day.substring(0, 4);
- var mm = day.substring(4, 6);
- var dd = day.substring(6);
- return yyyy + '-' + mm + '-' + dd;
- },
- //获取信息
- getIdCardInfo: function (idCardNo) {
- var idCardInfo = {
- gender: "", //性别
- birthday: "" // 出生日期(yyyy-mm-dd)
- };
- if (idCardNo.length == 15) {
- var aday = '19' + idCardNo.substring(6, 12);
- idCardInfo.birthday = idCardNoUtil.formateDateCN(aday);
- if (parseInt(idCardNo.charAt(14)) % 2 == 0) {
- idCardInfo.gender = idCardNoUtil.genders.female;
- } else {
- idCardInfo.gender = idCardNoUtil.genders.male;
- }
- } else if (idCardNo.length == 18) {
- var aday = idCardNo.substring(6, 14);
- idCardInfo.birthday = idCardNoUtil.formateDateCN(aday);
- if (parseInt(idCardNo.charAt(16)) % 2 == 0) {
- idCardInfo.gender = idCardNoUtil.genders.female;
- } else {
- idCardInfo.gender = idCardNoUtil.genders.male;
- }
- }
- return idCardInfo;
- },
- /*18位转15位*/
- getId15: function (idCardNo) {
- if (idCardNo.length == 15) {
- return idCardNo;
- } else if (idCardNo.length == 18) {
- return idCardNo.substring(0, 6) + idCardNo.substring(8, 17);
- } else {
- return null;
- }
- },
- /*15位转18位*/
- getId18: function (idCardNo) {
- if (idCardNo.length == 15) {
- var id17 = idCardNo.substring(0, 6) + '19' + idCardNo.substring(6);
- var parityBit = idCardNoUtil.getParityBit(id17);
- return id17 + parityBit;
- } else if (idCardNo.length == 18) {
- return idCardNo;
- } else {
- return null;
- }
- }
- };
- function isCardCheck(nid) {
- return idCardNoUtil.check18IdCardNo(nid);
- }
- function getTimeList(type) {
- let timeList = [];
- switch (type) {
- case 1:
- timeList = [{
- id: 1,
- time: '08:30-09:30'
- },
- {
- id: 2,
- time: '10:45-11:45'
- },
- {
- id: 3,
- time: '13:00-14:00'
- },
- {
- id: 4,
- time: '14:45-15:45'
- },
- {
- id: 5,
- time: '17:30-18:30'
- },
- {
- id: 6,
- time: '20:00-21:00'
- },
- ];
- break;
- case 2:
- timeList = [{
- id: 1,
- time: '08:00-10:00'
- },
- {
- id: 2,
- time: '13:00-15:00'
- },
- {
- id: 3,
- time: '17:30-19:30'
- }
- ];
- break;
- case 3:
- timeList = [{
- id: 1,
- time: '08:00-11:00'
- },
- {
- id: 2,
- time: '13:00-16:00'
- },
- {
- id: 3,
- time: '17:30-20:30'
- }
- ];
- break;
- case 4:
- timeList = [{
- id: 1,
- time: '08:00-12:00'
- },
- {
- id: 2,
- time: '13:45-17:45'
- }
- ];
- break;
- case 6:
- timeList = [{
- id: 1,
- time: '08:00-14:00'
- },
- {
- id: 2,
- time: '13:45-19:45'
- }
- ];
- break;
- case 8:
- timeList = [{
- id: 1,
- time: '08:00-17:00'
- }];
- break;
- case 9:
- timeList = [{
- id: 1,
- time: '08:00-18:00'
- }];
- break;
- default:
- timeList = [];
- }
- return timeList;
- }
- module.exports = {
- isValidPhone,
- isCardCheck,
- getTimeList
- }
|