后续中有遇到其他常用的js正则会持续更新~~~
获取带有单位字符串前的数字
let fn = (val='')=>{
return (val.match(/\d+(\.)?\d+/) || [])[0]
}
fn('50.22MB') // '50.22'
fn('50px') // '50'
fn('abc123.45abc') // '123.45'
// tip:parseInt() 或 parseFloat() 函数也可以达到相同效果(注意不是数字开头的字符串将得到 NaN)
parseFloat('50.33px') // 50.33
parseInt('50.33px') // 50
parseFloat('abc123.45abc') // NaN
验证是否是身份证号码
/**
* 验证是否是身份证号码
* @param card 身份证号码
* @return {boolean} true: 是 false:否
*/
function isCardNo(card) {
if(!card) return false
// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
return reg.test(card)
}
tip: 根据身份证号码解析出生年月
/**
* 根据身份证号码解析出生年月
* @param idCard 身份证号码
* @param format 返回类型 yyyy-MM-dd
* @return {string|null}
*/
function getBirthDateByIDNo(idCard, format="yyyy-MM-dd") {
if(!isCardNo(idCard)) return null
let pattern = /^(\d{6})(\d{4})(\d{2})(\d{2})/;
let match = pattern.exec(idCard);
if (match) {
let year = match[2];
let month = match[3];
let day = match[4];
// 解析 format
let formatReg = format.replace('yyyy','$1').replace('MM','$2').replace('dd','$3')
// return `${year}${month}${day}`.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3')
return `${year}${month}${day}`.replace(/^(\d{4})(\d{2})(\d{2})$/, formatReg)
}
return null;
}
验证是否是邮箱
function isEmail(val) {
let reg = /^([0-9A-Za-z\-_.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g
// ^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$"
return reg.test(val)
}
验证是否是手机号码
function isPhone(val){
return /^1[3|4|5|7|8|9]\d{9}$/.test(val)
}
若对你有帮助,请点个赞吧,若能打赏不胜感激,谢谢支持!
本文地址:https://www.jianshu.com/p/bd22414e65b7?v=1730252342016,转载请注明出处,谢谢。