正则表达式
正则表达式可以用来匹配字符串。
通过正则表达式,可以实现字符串的截取或按规则替换和验证字符串内容。
正则表达式独立于语言,很多语言都支持正则表达式。(并非 JavaScript 特性)。
在 JS 中创建正则表达式对象
//
中间不写内容就是注释,/.../
就是正则表达式。
1 | //第一种方法 |
类似于数组
1 | var list = new Array(); |
正则表达式
正则表达式的语法
^
:开头$
:结尾^
规定开头,$
规定结尾 ,如这个就是第一位只能是字母,因为字符串的第一位是 1,所以匹配失败。1
2
3
4var str = "1";
var reg = /^[a-z]$/;
var result = reg.test(str);
console.log(result); //false[]
:范围[a-z]:小写字母、[0-9]:数字、[A-Z]:大写字母。
[]
范围 要加范围直接在括号里加1
2
3
4var str = "s";
var reg = /[a-z]/;
var result = reg.test(str);
console.log(result); //true{}
:位数/^[a-z]{3}$/
表示要三位都是字母,多了不行,少了也不行。1
2
3
4var str = "abc";
var reg = /^[a-z]{3}$/;
var result = reg.test(str);
console.log(result); // true1
2
3
4var str = "abcd";
var reg = /^[a-z]{3}$/;
var result = reg.test(str);
console.log(result); // false()
:分组如,截取字符串
1
2
3
4
5
6
7
8var str = "2021-2-1";
// `()` 分组
var reg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
var result = reg.exec(str);
console.log(result); // ["2019-12-01", "2019", "12", "01", index: 0, input: "2019-12-01", groups: undefined]
console.log(result[1]); // 2019
console.log(result[2]); // 12
console.log(result[3]); // 01+
:匹配 1 位或多位,同{1,}
{x,y}
{5,8}:只能 5~8 位之间。{1,}
=+
:1 到多位。1
2
3
4var str = "testabcd"; //7位
var reg = /^[a-z]{5,8}$/;
var result = reg.test(str);
console.log(result); // true?
:0 位或 1 位,同{0,1}
?
代表 0 位或 1 位 ,?
={0,1}
1
2
3
4var str = "1";
var reg = /^\d?$/;
var result = reg.test(str);
console.log(result); // true1
2
3
4var str = "11";
var reg = /^\d?$/;
var result = reg.test(str);
console.log(result); // false1
2
3
4
5//0位
var str = ""; //空字符串
var reg = /^\d?$/;
var result = reg.test(str);
console.log(result); // true.
:匹配所有.
匹配所有 随便写什么都行别留空就行。1
2
3
4var str = ""; //空字符串
var reg = /^.+$/;
var result = reg.test(str);
console.log(result); //false1
2
3
4var str = "312FASFAasdsad2312——";
var reg = /^.+$/;
var result = reg.test(str);
console.log(result); //true\
:转义\
转义符 要想匹配得到就要转义1
2
3
4
5var str = "1+";
// `\`转义符
var reg = /^1\+$/;
var result = reg.test(str);
console.log(result); //true1
2
3
4var str = "1+";
var reg = /^1+$/;
var result = reg.test(str);
console.log(result); //false\d
:数字[0-9]
=\d
\w
:数字、字母、下划线[a-z 0-9 A-Z _]
=\w
[a-z 0-9 A-Z _]
:只能输入 0~9 的数字、a~z 小写字母、A~Z 大写字母或者下划线1
2
3
4
5var str = "teSta1_d";
var reg = /^[a-z 0-9 A-Z _]{5,8}$/;
//var reg = /^\w{5,8}$/;
var result = reg.test(str);
console.log(result); // true\s
:空格或换行1
2
3
4var str = " "; //空格
var reg = /^\s$/;
var result = reg.test(str);
console.log(result); // true1
2
3
4var str = " "; //空格
var reg = /^\s+$/;
var result = reg.test(str);
console.log(result); // trueg
全局匹配,找到所有能匹配到的内容。
1
2
3
4
5// 用户输入
var str = "123abc456def";
var reg = /[a-zA-z]/g;
var result = str.replace(reg, "");
console.log(result); // 123456reg.test()
用于检测字符串和正则表达式匹配成功。
reg.test()
返回值是布尔值 true/false。1
2
3
4
5
6//假设是用户输入的字符串
var str = "123";
//正则表达式
var reg = /123/;
var result = reg.test(str);
console.log(result); //true 匹配成功1
2
3
4var str = "456";
var reg = /123/;
var result = reg.test(str);
console.log(result); //false 失败reg.exec()
显示匹配的内容。
reg.exec()
返回值是匹配的内容。1
2
3
4var str = "s";
var reg = /[a-z]/;
var result = reg.exec(str);
console.log(result); //["s", index: 0, input: "s", groups: undefined]
例 1:验证邮箱格式
\w
:数字、字母、下划线; {5,12}
:5 位到 12 位
1 | // 用户输入 |
例 2:截取字符串
字符串 “2021-01-01”,可以将其数字部分截取出来。()
分组
1 | var str = "2021-2-1"; |
例 3:字符串替换
去掉字符串中的字母,把字符串中的某个内容替换成某个内容。
如,“123a456b789c”,去掉字符串中的所有字母( str.replace
)。
1 | // 用户输入 |
课后练习
1. 编写正则表达式,用于验证电话号码。
1 | var phoneNumber = "18503084396"; |
2. 编写正则表达式,用于验证邮箱格式。
1 | var EmailAddress = "xiaozhou123@126.com"; |
实际开发中…
大部分情况下,是不需要我们自己写正则表达式的。
邮箱或电话的验证方式:有很多现成的解决方案。
截取和替换数据,掌握一些常用语法即可。
以上内容编写于2021年8月18日02点10分。
常用正则表达式(转载)
一、校验数字的表达式
1 | 数字:^[0-9]*$ |
二、校验字符的表达式
1 | 汉字:^[\u4e00-\u9fa5]{0,}$ |
三、特殊需求表达式
1 | Email 地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ |