正则数据验证

1、身份证号码验证(身份证号正确性验证)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const WEIGHT = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
const MO = [1,0,'X',9,8,7,6,5,4,3,2]
function isRightId(id){
const arr = id.split('')
const checkNumber = arr.pop() // 去除校验码,将 pop 的返回值赋值给 checkNumber
let sum = 0
arr.forEach((ele, index) => {
sum += ele * WEIGHT[index]
})
const m = sum % 11
const result = MO[m]
return result+'' === checkNumber
}
console.log(isRightId('11010519491231002X')) // true
console.log(isRightId('110105194912310029')) // false

2、根据身份证号计算年龄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function getAge(id){
// 1、先判断身份证号的正确性
// 2、判断是否在世
const year = id.substr(6,4)
const month = id.substr(10,2)
const day = id.substr(12,2)

const timeBrth = new Date(`${year}/${month}/${day}`).getTime()
const timeNow = new Date().getTime()
const longTime = timeNow - timeBrth
const days = longTime / (1*24*60*60*1000)

let result = ''
if(days<31){
result = parseInt(days) + '天'
}else if(days<365){
result = `${parseInt(days/30)}${parseInt(days%30)}天`
}else{
result = `${parseInt(days/365)}${parseInt(days%365/30)}${parseInt(days%365%30)}天`
}
return result
}
console.log(getAge('11010519491231002X')) // 71 岁 8 月 16 天
console.log(getAge('11010520210820002X')) // 6 天
console.log(getAge('11010520210720002X')) // 1 月 7 天

3、根据身份证号判断性别

1
2
3
4
5
6
7
function getSex(id){
// 1、先判断身份证号的正确性
const sex = id.substr(16,1)
return sex%2? '男': '女'
}
console.log(getSex('11010519491231002X')) // 女
console.log(getSex('11010520210820001X')) // 男

4、姓名(2-4 个中文字符正则)

1
/^[\u4e00-\u9fa5]{2,4}$/

5、手机号

1
/^(1[3-9][0-9])\d{8}$/

6、座机号

1
/^(0\d{2,3})-?(\d{7,8})$/

7、手机号 + 座机号

1
/^(0\d{2,3}-?\d{7,8})$|^(1[3-9][0-9]{9})$/

8、电子邮箱

1
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/

9、QQ 号

1
/^[1-9][0-9]\d{4,9}$/

10、邮编

1
/^[1-9]\d{5}$/

11、身份证(正则)

1
2
3
4
5
/^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/  // 18位

/^[1-9]\d{5}\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$/ // 15位

/^(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/ // 后6位

12、车牌验证

1
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/

13、微信号验证

1
2
//微信号正则,6至20位,以字母开头,字母,数字,减号,下划线
/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;

14、16 进制颜色

1
2
//RGB Hex颜色正则
/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/

15、密码验证

1
2
3
4
5
//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;

//密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。
^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

16、查找 css 属性

1
2
// 匹配的CSS属性
/^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}/

17、查找 html 标签

1
2
// 匹配出HTML中的标签属性。
/<\/?\\w+((\\s+\\w+(\\s*=\\s*(?:".*?"|'.*?'|[\\^'">\\s]+))?)+\\s*|\\s*)\/?>/

18、查询()中间的内容

1
2
// 匹配()中间的内容
/\([^\{]+\)/