常用正则表达式集合
2017-03-28 本文已影响174人
overflow_hidden
1.手机号码
var r = /^1[3,4,5,7,8]\d{9}$/
r.test(value);
2.邮件
var r =
/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
r.test(value);
/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(value)
3.是否全部为汉字
var r = /^[\u4E00-\u9FA5]+$/i;
r.test(value);
4.密码设置(6-20字母、数字、_);
var r = /^[a-zA-Z0-9_]{6,20}$/;
r.test(value);
/^\w+/ //匹配单词字符
/^\W+/ 元字符用于查找非单词字符。单词字符包括:a-z、A-Z、0-9,以及下划线。
^[A-Za-z]+$ //26个字母组成
5.车辆发动机号码
var r = /^[0-9A-Za-z\-\-\u4e00-\u9fa5]{1,20}$/;;
6.浮点数
/^(-?\d+)(\.\d+)?$/ 正浮点
/^\d+(\.\d+)?$/
7.整数
/^-?\d+$/.test(value);
/^\d+$/.test(value);//非负整数
^\d{m,n}$ //m-n位的数字
8.基本的网址校验
/^(http(s)?:\/\/){1}/
/^(http(s)?:\/\/)?(www\.)?[\w-]+\.\w{2,4}(\/)?$/
9.由字母、数字、汉字组成1-20位
/^[a-zA-Z0-9\u4e00-\u9fa5]{1,20}$
10.去除所有空格
trimAll: function(str) {
if (!str) {
return str;
}
str = str.toString(); //确保字符串
return str.replace(/\s+/g, '');
},
11. 去除首尾空格
trim: function(str) {
if (!str) {
return str;
}
str = str.toString(); //确保字符串
return str.replace(/(^\s*)|(\s*$)/g, '');
},
12. 字符数量
validateLength: function(str){
var length = 0;
for (var i=0; i<str.length; i++) {
var c = str.charCodeAt(i); //获取Unicode编码
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
length++;
}
else {
length+=2;
}
}
return length; // 返回字符个数
}
13. 是否含有中文字符
hasChinese(s) {
let r = /[\u4E00-\u9FA5]/;
return r.test(s);
}
14. 是否为空对象
nullObject(obj) {
let j = false;
obj = typeof obj == 'object' ? obj : JSON.parse(obj);
for (let item in obj) {
return !j
}
return j;
}
//true 表示不为空对象
15. 银行卡
isValidBankCardNumber(cardNumber) {
let r = /^[0-9]{16,21}$/;
return r.test(trimAll(cardNumber));
}
16.验证车牌号
isValidPlate: function(plateNumber) {
var plate = plateNumber.toUpperCase();
var r = RegExp("^[宁冀鄂吉云皖蒙甘渝津粤沪京港新澳贵辽琼桂晋苏黑青陕藏浙湘川赣豫鲁台闽][A-HJ-NP-Z][A-HJ-NP-Z0-9]{5}$");
return r.test(trimAll(plate));
}
16. 发动机号码
/**
* 验证发动机号
* @param engineNumber
* @returns {boolean}
*/
isValidEngineNumber: function(engineNumber) {
var r = /^[0-9A-Za-z\-\-\u4e00-\u9fa5]{1,20}$/;
return r.test(trimAll(engineNumber));
},
17.身份证号码
/**
* 验证身份证号码
* @param code
* @returns {boolean}
*/
isValidID: function(code){
var city = {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:"国外 "};
var pass = true;
code = code.replace("x", "X");
code = trimAll(code);
if(!code || !/^\d{6}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){
pass = false;
}
else if(!city[code.substr(0, 2)]) {
pass = false;
}
else{
//18位身份证需要验证最后一位校验位
if (code.length == 18) {
code = code.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
//校验位
var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++) {
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
var last = parity[sum % 11];
if (parity[sum % 11] != code[17]) {
pass = false;
}
}
}
return pass;
}
18. 格式为xx.xx的数字
validate(num){
num = parseFloat(num); //去掉首尾不必要的0
var r = /^(\d{1,2})(\.(\d{0,2})?)?$/ ;
return r.test(num);
}
19. 只包含数字和字母
var r =/^[A-Za-z0-9]+$/
var r = /^[a-zA-Z0-9]{0,30}$/; 不能超过30位