一些常用的正则表达式

常用的正则表达式

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

sql语句:^(select|drop|delete|create|update|insert).*$

 

1、非负整数:^\d+$ 

2、正整数:^[0-9]*[1-9][0-9]*$ 

3、非正整数:^((-\d+)|(0+))$ 

4、负整数:^-[0-9]*[1-9][0-9]*$ 

5、整数:^-?\d+$ 

6、非负浮点数:^\d+(\.\d+)?$ 

7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 

8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 

9、负浮点数:^(-((正浮点数正则式)))$ 

10、英文字符串:^[A-Za-z]+$ 

11、英文大写串:^[A-Z]+$ 

12、英文小写串:^[a-z]+$ 

13、英文字符数字串:^[A-Za-z0-9]+$ 

14、英数字加下划线串:^\w+$ 

15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 

16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 

或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$

17、邮政编码:^[1-9]\d{5}$

18、中文:^[\u0391-\uFFE5]+$

19、电话号码:^((\d2,3)|(\d{3}\-))?(0\d2,3|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

20、手机号码:^((\d2,3)|(\d{3}\-))?13\d{9}$

21、双字节字符(包括汉字在内):^\x00-\xff

22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)

23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/> 

24、匹配空行:\n[\s| ]*\r

25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)

29、提取信息中的中国手机号码:(86)*0*13\d{9}

30、提取信息中的中国固定电话号码:(\d3,4|\d{3,4}-|\s)?\d{8}

31、提取信息中的中国电话号码(包括移动和固定电话):(\d3,4|\d{3,4}-|\s)?\d{7,14}

32、提取信息中的中国邮政编码:1-9]{1}(\d+){5}

33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+

34、提取信息中的任何数字 :(-?\d*)(\.\d+)? 

35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)

36、电话区号:/^0\d{2,3}$/

37、腾讯QQ号:^[1-9]*[1-9][0-9]*$

38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

 

2.案例

validator.js

/*
 * 执行正则表达式
 * @param pattern 校验的正则表达式
 * @param strValue 校验的值
 * @returns {boolean}
 */
function executeExp(pattern, strValue) {
	return pattern.test(strValue);
}
//验证手机号码
function isMobile(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^(13|14|15|17|18|19)[0-9]{9}$/;
	return pattern.test(strValue);
}
//验证数字	
function isNumber(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^[1-9]\d*$|^0$/;
	return pattern.test(strValue);
}
//验证是否为空
function isEmpty(strValue) {
	strValue = jQuery.trim(strValue);
	return strValue.length == 0;
}
/**
 * 判断字符串是否非空
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isNotEmpty(strValue) {
	return !isEmpty(strValue);
}
/**
 * 判断是否是正确的日期,正确格式为:yyyy-mm-dd或者yyyy/mm/dd
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isDate(strValue) {
	if(isEmpty(strValue)) {
		return false
	}
	var r = strValue.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
	if(r == null)
		return false;
	var d = new Date(r[1], r[3] - 1, r[4]); //?
	return(d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
}
/**
 * 判断是否长时间,形如 (2003-12-05 13:04:06)
 * @param str 校验的值
 * @returns {boolean}
 */
function isDateTime(str) {
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
	var r = str.match(reg);
	if(r == null) return false;
	var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
	return(d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
}
/**
 * 判断字符串是否为字母或数字
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isAlphaNumeric(strValue) {
	if(isEmpty(strValue))
		return false;
	// 只能是 A-Z a-z 0-9 之间的字母数字 或者为空
	var pattern = /^[A-Za-z0-9]+$/;
	return executeExp(pattern, strValue);
}
/**
 * 判断是否为中文、英文、字母或_
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isCnAndEnNumeric(strValue) {
	var pattern = /^[_0-9a-zA-Z\u4e00-\u9fa5]+$/;
	return executeExp(pattern, strValue);
}

/**
 * 判断是否为英文、数字、字母或_
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isEnNumeric(strValue) {
	var pattern = /^[_0-9a-zA-Z]+$/;
	return executeExp(pattern, strValue);
}

/**
 * 判断是否为中文
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isCnAndEn(strValue) {
	if(isEmpty(strValue))
		return false;

	var pattern = /^[\u4E00-\u9FA5]+$/;

	return executeExp(pattern, strValue);
}
/**
 * 判断是否是货币
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isMoney(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^[+-]?\d+(,\d{3})*(\.\d+)?$/;
	return executeExp(pattern, strValue);
}

/**
 * 判断是否为数字
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isNumeric(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^[0-9]*$/;
	return executeExp(pattern, strValue);
}

/**
 * 判断是否为浮点数(不带正负号)
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isNumberFloat(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^\d+(\.\d+)?$/;
	return executeExp(pattern, strValue);
}
/**
 * 判断是否为固话
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isTel(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
	return executeExp(pattern, strValue);
}

/**
 * 判断是否为电话
 * @param strValue 校验的值
 * @returns {boolean}
 */
function isPhone(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /(^\(\d{3,5}\)\d{6,8}(-\d{2,8})?$)|(^\d+-\d+$)|(^(13|14|15|17|18)[0-9]{9}$)/;
	return executeExp(pattern, strValue);
}
/**
 * 判断是否是几位小数,比如1.02、1.341、0.3143等格式
 * @param strValue 校验的值
 * @param posiNum 表示要校验几位,可不传,默认为2位
 * @returns {boolean}
 */
function isFormatNumber(strValue, posiNum) {
	if(isEmpty(strValue))
		return false;
	posiNum = typeof posiNum != "undefined" ? posiNum : 2;
	var pattern = new RegExp("^[0-9]+\.[0-9]{" + posiNum + "}$");;
	return pattern.test(strValue);
}
//验证邮箱
function isEmail(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
	//	var pattern = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; 
	return pattern.test(strValue);
}
//验证QQ
function isQQ(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^[1-9]\d{4,9}$/;
	//	return pattern.test(strValue);
	return executeExp(pattern, strValue)
}
//验证邮政编码
function isZipcode(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /(^\d{6}$)/;
	return pattern.test(strValue)
	//	return executeExp(pattern, strValue);
}
//验证是否为合法的URL
function isURL(strValue) {
	if(isEmpty(strValue))
		return false;
	var pattern = /^(http|https|ftp):\/\/(\w+\.)+[a-z]{2,3}(\/\w+)*(\/\w+\.\w+)*(\?\w+=\w*(&\w+=\w*)*)*/;
	return pattern.test(strValue)
}
//这个方法的作用
function strToInt(strValue) {
	while(strValue.length > 1 && strValue.substring(0, 1) == "0") {
		strValue = strValue.substring(1, strValue.length);
	}
	return parseInt(strValue);
}
//验证身份证的有效性
function isCardID(strValue) {
	if(isEmpty(strValue)) {
		return false;
	}
	var vcity = {
		11: "北京",
		12: "天津",
		13: "河北",
		14: "山西",
		15: "内蒙古",
		21: "辽宁",
		22: "吉林",
		23: "黑龙江",
		31: "上海",
		32: "江苏",
		33: "浙江",
		34: "安徽",
		35: "福建",
		36: "江西",
		37: "山东",
		41: "河南",
		42: "湖北",
		43: "湖南",
		44: "广东",
		45: "广西",
		46: "海南",
		50: "重庆",
		51: "四川",
		52: "贵州",
		53: "云南",
		54: "西藏",
		61: "陕西",
		62: "甘肃",
		63: "青海",
		64: "宁夏",
		65: "新疆",
		71: "台湾",
		81: "香港",
		82: "澳门",
		91: "国外"
	};
	console.log(vcity[11])
	//校验长度,类型,身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X,也有可能是Y
	//	strValue = strValue.toUpperCase();
	var pattern = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
	if(pattern.test(strValue) == false) {
		return false;
	}
	//检查省份
	var province = strValue.substr(0, 2);
	if(vcity[province] == undefined) {
		return false;
	}
	//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
	var len = strValue.length;
	if(len == 15) {
		var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
		var arr_data = strValue.match(re_fifteen);
		console.log(arr_data);
		var year = strToInt('19' + arr_data[2]); //为什么加上19
		console.log(year)
		var month = strToInt(arr_data[3]);
		console.log(month)
		var day = strToInt(arr_data[4]);
		console.log(day)
		var birthday = new Date('19' + year + '/' + month + '/' + day);
		console.log(birthday)
		//var birthday = new Date();
		birthday.setFullYear(year);
		birthday.setMonth(month - 1);
		birthday.setDate(day);
		var now = new Date();
		var now_year = now.getFullYear();
		//年月日是否合理
		if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) { //这句判断有什么用
			var time = now - now_year;
			if(time >= 3 && time <= 100) {
				return false;
			}
		} else {
			return true;
		}
	}
	//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
	if(len == 18) {
		var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
		var arr_data = strValue.match(re_eighteen);
		var year = strToInt(arr_data[2]);
		var month = strToInt(arr_data[3]);
		var day = strToInt(arr_data[4]);
		var birthday = new Date(year + '/' + month + '/' + day);
		//var birthday = new Date();
		birthday.setFullYear(year);
		birthday.setMonth(month - 1);
		birthday.setDate(day);
		var now = new Date();
		var now_year = now.getFullYear();
		//年月日是否合理
		if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) {
			//判断年份的范围(3岁到100岁之间)
			var time = now_year - year;
			if(!(time >= 3 && time <= 100)) {
				return false;
			}
		} else {
			return false;
		}
	}
	//检验位的检测
	//15位转18位
	if(strValue.length == 15) {
		var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
		var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
		var cardTemp = 0,
			i;
		strValue = strValue.substr(0, 6) + '19' + strValue.substr(6, strValue.length - 6);
		for(i = 0; i < 17; i++) {
			cardTemp += strValue.substr(i, 1) * arrInt[i];
		}
		strValue += arrCh[cardTemp % 11];
	}
	if(strValue.length == 18) {
		var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
		var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
		var cardTemp = 0,
			i, valnum;
		for(i = 0; i < 17; i++) {
			cardTemp += parseInt(strValue.substr(i, 1)) * arrInt[i];
		}
		valnum = arrCh[cardTemp % 11];
		if(!(valnum == strValue.substr(17, 1))) {
			return false;
		}
	}
	return true;
}

login.js

if(!isMobile(uname.trim())) {
			   console.log('请输入正确的手机号码')
				return false;
			}

其他的都按这中方式来引用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值