前端最全正则校验

885 阅读1分钟

基本的正则校验

验证电子邮箱格式

function email(value) {
	return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value);
}

验证手机格式

function validPhone(str) {
  const reg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
  return reg.test(str)
}

手机号脱敏

export const hideMobile = (mobile) => {  
  return mobile.replace(/^(\d{3})\d{4}(\d{4})$/"$1****$2")  
}

验证URL格式

function url(value) {
	return /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(value)
}

验证日期格式

function date(value) {
	return !/Invalid|NaN/.test(new Date(value).toString())
}

验证ISO类型的日期格式

function dateISO(value) {
	return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value)
}

验证十进制数字

function number(value) {
	return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value)
}

验证数字

//正整数和0:
      /^\d+$/.test(value)  
//正整数
    /^[1-9]\d*$/
//负整数:
       /^-\d+$/.test(value)   
//整 数:
      /^-?\d+$/.test(value)  
//正小数:
      /^\d+\.\d+$/.test(value)  
//负小数:
     /^-\d+\.\d+$/.test(value)
//是零开头的数字:
    /^0+/.test(value)

验证身份证号码

function idCard(value) {
	return /^[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)$/.test(
		value)
}

是否车牌号

function carNo(value) {
	// 新能源车牌
	const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
	// 旧车牌
	const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
	if (value.length === 7) {
		return creg.test(value);
	} else if (value.length === 8) {
		return xreg.test(value);
	} else {
		return false;
	}
}

金额,只允许2位小数

function amount(value) {
	//金额,只允许保留两位小数(整数除外)
	return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value);
}
//大于0的数都保留两位小数
/^(0|[1-9]\d*)(.\d{2})$/

中文

function chinese(value) {
	let reg = /^[\u4e00-\u9fa5]+$/gi;
	return reg.test(value);
}

只能输入字母

function letter(value) {
	return /^[a-zA-Z]*$/.test(value);
}

只能是字母或者数字

function enOrNum(value) {
	//英文或者数字
	let reg = /^[0-9a-zA-Z]*$/g;
	return reg.test(value);
}

验证一个值范围[min, max]

function range(value, param) {
	return value >= param[0] && value <= param[1]
}

验证一个长度范围[min, max]

function rangeLength(value, param) {
	return value.length >= param[0] && value.length <= param[1]
}

是否固定电话

function landline(value) {
	let reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/;
	return reg.test(value);
}

是否json字符串

function jsonString(value) {
	if (typeof value == 'string') {
		try {
			var obj = JSON.parse(value);
			if (typeof obj == 'object' && obj) {
				return true;
			} else {
				return false;
			}
		} catch (e) {
			return false;
		}
	}
	return false;
}

是否数组

function array(value) {
	if (typeof Array.isArray === "function") {
		return Array.isArray(value);
	} else {
		return Object.prototype.toString.call(value) === "[object Array]";
	}
}

是否对象

function object(value) {
	return Object.prototype.toString.call(value) === '[object Object]';
}

是否短信验证码

function code(value, len = 6) {
	return new RegExp(`^\\d{${len}}$`).test(value);
}

检查一个对象是否为空对象

const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object  
isEmpty({}) // true  
isEmpty({ name'fatfish' }) // false