一些常用的正則表示式
常用的正則表示式
匹配中文字元的正則表示式: [\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://(/
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-*\.*)[email protected](\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;
}
其他的都按這中方式來引用