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'));
一、校验数字的表达式