正负数、小数
let reg = /^-?([1-9]\d*|0(?!\d))(\.\d+|\d)$/
reg.test('0')
reg.test('00')
reg.test('010')
reg.test('0.0')
reg.test('-10.0')
reg.test('10.0')
reg.test('10.')
汉语姓名(符合中国规则的名字)
let reg = /^[\u4e00-\u9fa5]{2,6}(·[\u4e00-\u9fa5]{1,6}){0,2}$/
reg.test('尼古拉斯赵四·二傻·三石子')
reg.test('尼古拉斯赵四·二傻·三石子·二世')
reg.test('王')
身份证号码
let reg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/
reg.test('110199501010000')
reg.test('11019950101000D')
reg.test('110199502010000')
校验码校验是否为有效身份证号码
function validIdCard(idcard) {
let str = idcard.slice(0, 17)
let validCode = idcard.slice(-1).toUpperCase()
let coefficient = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
let sum = str.split('').reduce((s, v, i) => {
s += v * coefficient[i]
return s
}, 0)
let checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
let index = sum % 11
let isValid = checkCode[index] === validCode
if (isValid) {
console.log("有效的身份证号码")
} else {
console.log("无效的身份证号码")
}
return isValid
}
替换指定个数的字符外的其他字符
let reg = /(?<=.{6}).+/
'123456'.replace(reg, '...')
'1234567'.replace(reg, '...')
'12345678910'.replace(reg, '...')
数字转千分位
function toThousands(num) {
return num.toString().replace(/\d+/, function (n) {
return n.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
})
}
toThousands('1222222')
toThousands('1222222.2222')
toThousands('222')
toThousands('0.2223')
校验字符串中仅能包含 0 至 3 个字母(即字母数量不超过 3 个)
const regexA = /^([^a-zA-Z]*[a-zA-Z]?[^a-zA-Z]*){0,3}$/;
const regexB = /^(?!(?:.*?[A-Za-z]){4})[\s\S]*$/;
regexA .test('')
regexA .test('1231111111111')
regexA .test('123111d1d111111')
regexA .test('123111dd1d111111')
常规号牌
const regexStep1 = /^[京沪鄂湘川渝粤闽晋黑津浙豫赣贵青琼宁吉蒙冀苏皖桂云陕甘藏新辽鲁][A-Z\d]{5}[A-Z\d港澳学]$/
const regexStep2 = /^([^A-Z]*[A-Z]?[^A-Z]*){0,3}$/