常用的正则表达式
匹配中文字符的正则表达式: [\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;
}
其他的都按这中方式来引用