校验规则,如是否手机号,邮箱号,URL等

	/**
	 * 验证电子邮箱格式
	 */
	function email(value) {
		return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
	}
	
	/**
	 * 验证手机格式
	 */
	function mobile(value) {
		return /^1[3-9]\d{9}$/.test(value)
	}
	
	/**
	 * 验证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{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value)
	}
	
	/**
	 * 验证整数
	 */
	function digits(value) {
		return /^\d+$/.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);
	}
	
	/**
	 * 中文
	 */
	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);
	}
	
	/**
	 * 验证是否包含某个值
	 */
	function contains(value, param) {
		return value.indexOf(param) >= 0
	}
	
	/**
	 * 验证一个值范围[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);
	}
	
	/**
	 * 判断是否为空
	 */
	function empty(value) {
		switch (typeof value) {
			case 'undefined':
				return true;
			case 'string':
				if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
				break;
			case 'boolean':
				if (!value) return true;
				break;
			case 'number':
				if (0 === value || isNaN(value)) return true;
				break;
			case 'object':
				if (null === value || value.length === 0) return true;
				for (var i in value) {
					return false;
				}
				return true;
		}
		return false;
	}
	
	/**
	 * 是否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);
	}
	
	
	export default {
		email,
		mobile,
		url,
		date,
		dateISO,
		number,
		digits,
		idCard,
		carNo,
		amount,
		chinese,
		letter,
		enOrNum,
		contains,
		range,
		rangeLength,
		empty,
		isEmpty: empty,
		jsonString,
		landline,
		object,
		array,
		code
	}
	/**
	 * 验证电子邮箱格式
	 */
	function email(value) {
		return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
	}
	
	/**
	 * 验证手机格式
	 */
	function mobile(value) {
		return /^1[3-9]\d{9}$/.test(value)
	}
	
	/**
	 * 验证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{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value)
	}
	
	/**
	 * 验证整数
	 */
	function digits(value) {
		return /^\d+$/.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);
	}
	
	/**
	 * 中文
	 */
	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);
	}
	
	/**
	 * 验证是否包含某个值
	 */
	function contains(value, param) {
		return value.indexOf(param) >= 0
	}
	
	/**
	 * 验证一个值范围[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);
	}
	
	/**
	 * 判断是否为空
	 */
	function empty(value) {
		switch (typeof value) {
			case 'undefined':
				return true;
			case 'string':
				if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
				break;
			case 'boolean':
				if (!value) return true;
				break;
			case 'number':
				if (0 === value || isNaN(value)) return true;
				break;
			case 'object':
				if (null === value || value.length === 0) return true;
				for (var i in value) {
					return false;
				}
				return true;
		}
		return false;
	}
	
	/**
	 * 是否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);
	}
	
			/**
	 * @param {string} path
	 * @returns {Boolean}
	 */
	export function isExternal(path) {
	  return /^(https?:|mailto:|tel:)/.test(path)
	}
	
	/**
	 * @param {string} str
	 * @returns {Boolean}
	 */
	export function validUsername(str) {
	  const valid_map = ['admin', 'editor']
	  return valid_map.indexOf(str.trim()) >= 0
	}
	
	/**
	 * @param {string} url
	 * @returns {Boolean}
	 */
	export function validURL(url) {
	  const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
	  return reg.test(url)
	}
	
	/**
	 * @param {string} str
	 * @returns {Boolean}
	 */
	export function validLowerCase(str) {
	  const reg = /^[a-z]+$/
	  return reg.test(str)
	}
	
	/**
	 * @param {string} str
	 * @returns {Boolean}
	 */
	export function validUpperCase(str) {
	  const reg = /^[A-Z]+$/
	  return reg.test(str)
	}
	
	/**
	 * @param {string} str
	 * @returns {Boolean}
	 */
	export function validAlphabets(str) {
	  const reg = /^[A-Za-z]+$/
	  return reg.test(str)
	}
	
	/**
	 * @param {string} email
	 * @returns {Boolean}
	 */
	export function validEmail(email) {
	  const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
	  return reg.test(email)
	}
	
	export function isvalidPhone(phone) {
	  const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
	  return reg.test(phone)
	}
	
	/**
	 * @param {string} str
	 * @returns {Boolean}
	 */
	export function isString(str) {
	  if (typeof str === 'string' || str instanceof String) {
	    return true
	  }
	  return false
	}
	
	/**
	 * @param {Array} arg
	 * @returns {Boolean}
	 */
	export function isArray(arg) {
	  if (typeof Array.isArray === 'undefined') {
	    return Object.prototype.toString.call(arg) === '[object Array]'
	  }
	  return Array.isArray(arg)
	}
	
	/**
	 * 是否合法IP地址
	 * @param rule
	 * @param value
	 * @param callback
	 */
	export function validateIP(rule, value, callback) {
	  if (value === '' || value === undefined || value == null) {
	    callback()
	  } else {
	    const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
	    if ((!reg.test(value)) && value !== '') {
	      callback(new Error('请输入正确的IP地址'))
	    } else {
	      callback()
	    }
	  }
	}
	
	/* 是否手机号码或者固话*/
	export function validatePhoneTwo(rule, value, callback) {
	  const reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/
	  if (value === '' || value === undefined || value == null) {
	    callback()
	  } else {
	    if ((!reg.test(value)) && value !== '') {
	      callback(new Error('请输入正确的电话号码或者固话号码'))
	    } else {
	      callback()
	    }
	  }
	}
	
	/* 是否固话*/
	export function validateTelephone(rule, value, callback) {
	  const reg = /0\d{2}-\d{7,8}/
	  if (value === '' || value === undefined || value == null) {
	    callback()
	  } else {
	    if ((!reg.test(value)) && value !== '') {
	      callback(new Error('请输入正确的固话(格式:区号+号码,如010-1234567)'))
	    } else {
	      callback()
	    }
	  }
	}
	
	/* 是否手机号码*/
	export function validatePhone(rule, value, callback) {
	  const reg = /^[1][3,4,5,7,8][0-9]{9}$/
	  if (value === '' || value === undefined || value == null) {
	    callback()
	  } else {
	    if ((!reg.test(value)) && value !== '') {
	      callback(new Error('请输入正确的电话号码'))
	    } else {
	      callback()
	    }
	  }
	}
	
	/* 是否身份证号码*/
	export function validateIdNo(rule, value, callback) {
	  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
	  if (value === '' || value === undefined || value == null) {
	    callback()
	  } else {
	    if ((!reg.test(value)) && value !== '') {
	      callback(new Error('请输入正确的身份证号码'))
	    } else {
	      callback()
	    }
	  }
	}


	
	export default {
		email,
		mobile,
		url,
		date,
		dateISO,
		number,
		digits,
		idCard,
		carNo,
		amount,
		chinese,
		letter,
		enOrNum,
		contains,
		range,
		rangeLength,
		empty,
		isEmpty: empty,
		jsonString,
		landline,
		object,
		array,
		code
	}

  // json数据按英文字母顺序进行排序
    objKeySort(obj){
      var newkey=Object.keys(obj).sort()
      var nreObj={}
      for (var i = 0; i < newkey.length; newkey++) {
       nreObj[newkey[i]]=obj[newkey[i]]
      }
      return newObj
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值