最全正则表达式总结:验证QQ号、手机号、Email、(2)

1.// 判断是不是QQ号
2.// 1 首位不能是0  ^[1-9]
3.// 2 必须是 [5, 11] 位的数字 \d{4, 9}
4.var str = '80583600';
5.var regexp = /^[1-9][0-9]{4,10}$/gim;
6.if (regexp.test(str)) {
7.    alert('is');
8.} else {
9.    alert('no');
10.}

exec()

exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

1.var patt1 = new RegExp('e');
2.console.log(patt1.exec('some text'));
3.// OUTPUT:e
4.var patt2 = new RegExp('ee');
5.console.log(patt2.exec('some text'));
6.// OUTPUT:null

compile()

compile() 既可以改变检索模式,也可以添加或删除第二个参数。

1.var patt1=new RegExp("e");
2.document.write(patt1.test("The best things in life are free")); // true
3.// 改变了检索模式
4.patt1.compile("eee");
5.document.write(patt1.test("The best things in life are free")); // false
支持正则表达式的 String 对象的方法

search 检索与正则表达式相匹配的值。

1.var str = "Visit W3School!"
2.console.log(str.search(/W3School/))
3.// OUTPUT:6
match 找到一个或多个正则表达式的匹配。

1.var str="1 plus 2 equal 3"
2.console.log(str.match(/\d+/g))
3.// OUTPUT:1,2,3
replace 替换与正则表达式匹配的子串。

1.var str = "Visit Microsoft!"
2.console.log(str.replace(/Microsoft/, "W3School"));
3.// OUTPUT:Visit W3School!
1.// 找重复项最多的字符个数
2.var str = 'g21ss4aeba_ersb43sgnnsssstht6sss60snnsj8resw0_ss';
3.// split : 将字符串转化为数组
4.// sort : 对数组排序,ASCII
5.// join : 将数组转化为字符串
6.var str_new = str.split('').sort().join('');
7.document.write(str + '<br>');
8.document.write(str.split('') + '<br>');
9.document.write(str.split('').sort() + '<br>');
10.document.write(str.split('').sort().join('') + '<br>');
11.// 匹配字符,且重复这个字符,重复次数至少一次。
12.var regexp = /(\w)\1+/g;
13.var index = 0;
14.var value = '';
15.str_new.replace(regexp, function($0, $1) {
16.    // document.write($0);
17.    // document.write($1);
18.    if (index < $0.length) {
19.        index = $0.length;
20.        value = $1;
21.    }
22.});
23.document.write('重复项最多的字符是:' + value + ',个数是:' + index);
24.// OUTPUT:
25.// 0012344668__aabbeeegghjnnnnrrssssssssssssssssttw
26.// 重复项最多的字符是:s,个数是:16
split 把字符串分割为字符串数组。

1.var str = "How are you doing today?"
2.document.write(str.split(/\s+/));
3.// OUTPUT:How,are,you,doing,today?

经验:

检验格式(邮箱格式、IP格式)是否正确,用test()
抓取星期(如所有手机号),用exec()、match()
替换敏感词汇,用replace()

常见的 正则表达式 校验

1.// 常见的 正则表达式 校验
2.// QQ号、手机号、Email、是否是数字、去掉前后空格、是否存在中文、邮编、身份证、URL、日期格式、IP
3.var myRegExp = {
4.    // 检查字符串是否为合法QQ号码
5.    isQQ: function(str) {
6.        // 1 首位不能是0  ^[1-9]
7.        // 2 必须是 [5, 11] 位的数字  \d{4, 9}
8.        var reg = /^[1-9][0-9]{4,9}$/gim;
9.        if (reg.test(str)) {
10.            console.log('QQ号码格式输入正确');
11.            return true;
12.        } else {
13.            console.log('请输入正确格式的QQ号码');
14.            return false;
15.        }
16.    },
17.    // 检查字符串是否为合法手机号码
18.    isPhone: function(str) {
19.        var reg = /^(0|86|17951)?(13[0-9]|15[012356789]|18[0-9]|14[57]|17[678])[0-9]{8}$/;
20.        if (reg.test(str)) {
21.            console.log('手机号码格式输入正确');
22.            return true;
23.        } else {
24.            console.log('请输入正确格式的手机号码');
25.            return false;
26.        }
27.    },
28.    // 检查字符串是否为合法Email地址
29.    isEmail: function(str) {
30.        var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
31.        // var reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
32.        if (reg.test(str)) {
33.            console.log('Email格式输入正确');
34.            return true;
35.        } else {
36.            console.log('请输入正确格式的Email');
37.            return false;
38.        }
39.    },
40.    // 检查字符串是否是数字
41.    isNumber: function(str) {
42.        var reg = /^\d+$/;
43.        if (reg.test(str)) {
44.            console.log(str + '是数字');
45.            return true;
46.        } else {
47.            console.log(str + '不是数字');
48.            return false;
49.        }
50.    },
51.    // 去掉前后空格
52.    trim: function(str) {
53.        var reg = /^\s+|\s+$/g;
54.        return str.replace(reg, '');
55.    },
56.    // 检查字符串是否存在中文
57.    isChinese: function(str) {
58.        var reg = /[\u4e00-\u9fa5]/gm;
59.        if (reg.test(str)) {
60.            console.log(str + ' 中存在中文');
61.            return true;
62.        } else {
63.            console.log(str + ' 中不存在中文');
64.            return false;
65.        }
66.    },
67.    // 检查字符串是否为合法邮政编码
68.    isPostcode: function(str) {
69.        // 起始数字不能为0,然后是5个数字  [1-9]\d{5}
70.        var reg = /^[1-9]\d{5}$/g;
71.        // var reg = /^[1-9]\d{5}(?!\d)$/;
72.        if (reg.test(str)) {
73.            console.log(str + ' 是合法的邮编格式');
74.            return true;
75.        } else {
76.            console.log(str + ' 是不合法的邮编格式');
77.            return false;
78.        }
79.    },
80.    // 检查字符串是否为合法身份证号码
81.    isIDcard: function(str) {
82.        var reg = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
83.        if (reg.test(str)) {
84.            console.log(str + ' 是合法的身份证号码');
85.            return true;
86.        } else {
87.            console.log(str + ' 是不合法的身份证号码');
88.            return false;
89.        }
90.    },
91.    // 检查字符串是否为合法URL
92.    isURL: function(str) {
93.        var reg = /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;
94.        if (reg.test(str)) {
95.            console.log(str + ' 是合法的URL');
96.            return true;
97.        } else {
98.            console.log(str + ' 是不合法的URL');
99.            return false;
100.        }
101.    },
102.    // 检查字符串是否为合法日期格式 yyyy-mm-dd
103.    isDate: function(str) {
104.        var reg = /^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/;
105.        if (reg.test(str)) {
106.            console.log(str + ' 是合法的日期格式');
107.            return true;
108.        } else {
109.            console.log(str + ' 是不合法的日期格式,yyyy-mm-dd');
110.            return false;
111.        }
112.    },
113.    // 检查字符串是否为合法IP地址
114.    isIP: function(str) {
115.        // 1.1.1.1  四段  [0 , 255]
116.        // 第一段不能为0
117.        // 每个段不能以0开头
118.        //
119.        // 本机IP: 58.50.120.18 湖北省荆州市 电信
120.        var reg = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/gi;
121.        if (reg.test(str)) {
122.            console.log(str + ' 是合法的IP地址');
123.            return true;
124.        } else {
125.            console.log(str + ' 是不合法的IP地址');
126.            return false;
127.        }
128.    }
129.}
130.// 测试
131.// console.log(myRegExp.isQQ('80583600'));
132.// console.log(myRegExp.isPhone('17607160722'));
133.// console.log(myRegExp.isEmail('80583600@qq.com'));
134.// console.log(myRegExp.isNumber('100a'));
135.// console.log(myRegExp.trim('  100  '));
136.// console.log(myRegExp.isChinese('baixiaoming'));
137.// console.log(myRegExp.isChinese('小明'));
138.// console.log(myRegExp.isPostcode('412345'));
139.// console.log(myRegExp.isIDcard('42091119940927001X'));
140.// console.log(myRegExp.isURL('https://www.baidu.com/'));
141.// console.log(myRegExp.isDate('2017-4-4'));
142.// console.log(myRegExp.isIP('1.0.0.0'));

一、校验数字的表达式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wydgsp.html