Skip to content

Instantly share code, notes, and snippets.

@hsuanxyz
Created May 16, 2017 09:18
Show Gist options
  • Save hsuanxyz/93af3b1d33ec68554e972eba7b8e9da8 to your computer and use it in GitHub Desktop.
Save hsuanxyz/93af3b1d33ec68554e972eba7b8e9da8 to your computer and use it in GitHub Desktop.
validation
/**
* Created by hsuanlee on 12/05/2017.
*/
//字符串长度
export function stringLen (val){
if(!val || typeof val !== 'string'){
return 0
}
return val.replace(/[^\x00-\xff]/g, 'xx').length;
}
//手机
export function isPhone (val){
var reg = /(^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$)|(^0{0,1}1[3|4|5|6|7|8|9][0-9]{9}$)/;
return !!reg.test(val);
}
//座机
export function isTel (val){
var reg = /([0-9]{3,4}-)?[0-9]{7,8}/;
return !!reg.test(val);
}
//中文
export function isChinese (val){
var reg = /^[\u4E00-\u9FA5]+$/;
return !!reg.test(val);
}
// 邮件
export function isEmail (val){
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
return !!reg.test(val);
}
export function isCarId(carId) {
var express = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[警京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{0,1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
return express.test(carId);
}
// 身份证
export function isId (ID){
if(typeof ID !== 'string') return false;
var city = {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:"国外"};
var birthday = ID.substr(6, 4) + '/' + Number(ID.substr(10, 2)) + '/' + Number(ID.substr(12, 2));
var d = new Date(birthday);
var newBirthday = d.getFullYear() + '/' + Number(d.getMonth() + 1) + '/' + Number(d.getDate());
var currentTime = new Date().getTime();
var time = d.getTime();
var arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
var sum = 0, i, residue;
if(!/^\d{17}(\d|x)$/i.test(ID)) return false;
if(city[ID.substr(0,2)] === undefined) return false;
if(time >= currentTime || birthday !== newBirthday) return false;
for(i=0; i<17; i++) {
sum += ID.substr(i, 1) * arrInt[i];
}
residue = arrCh[sum % 11];
return residue === ID.substr(17, 1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment