RegExp是什么?
- RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配。
- 通常用于格式验证、正则替换、查找子串等
- 各种编程语言的正则表达式基本相同,不同的语言可能会有一些细小的差别
- 推荐一个在线验证的工具https://regex101.com
量词
量词 | 作用 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。同 {1,} |
n* | 匹配任何包含零个或多个 n 的字符串。同 {0,} |
n? | 匹配任何包含零个或一个 n 的字符串。同 {0,1} |
n{X} | 匹配包含 X 个 n 的序列的字符串。 |
n{X,Y} | 匹配包含 X 至 Y 个 n 的序列的字符串。 |
n{X,} | 匹配包含至少 X 个 n 的序列的字符串。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。注意 /[^a] / 和 /^ [a]/是不一样的,前者是排除的,后者是代表首位。 |
(?=n) | 匹配任何其后紧接指定字符串 n 的字符串。正向预查 |
(?!n) | 匹配任何其后没有紧接指定字符串 n 的字符串。反向预查 |
RegExp 对象方法
test()
test()
方法检索字符串中是否存在指定的值。返回值是 true 或 false。1
2
3
4
5
6
7
8
9
10
11//判断是不是QQ号
//首位不能是0
//必须是5-11位数的数字
var str = '812634676';
var regexp = /^[1-9][0-9]{4,10}$/gim;
if (regexp.test(str)){
alert('is');
}else{
alert('no');
}
exec()
exec()
方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。1
2
3
4
5
6
7var patt1 = new RegExp('e');
console.log(patt1.exec('some text'));
//OUTPUT:e
var patt2 =new RegExp('ee');
console.log(patt2.exec('some text'));
//OUTPUT:null
compile()
compile()
既可以改变检索模式,也可以添加或删除第二个参数。1
2
3
4
5var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free")); // true
// 改变了检索模式
patt1.compile("eee");
document.write(patt1.test("The best things in life are free")); // false
支持正则表达式的String对象的方法
search 检索与正则表达式相匹配的值。
1 | var str = "Visit W3School!"; |
replace替换与正则表达式匹配的子串。
1 | var str = "Visit Microsoft!"; |
1 | // 找重复项最多的字符个数 |
match找到一个或多个正则表达式的匹配。
1 | var str = "1 plus 2 equal 3" |
split把字符串分割为字符串数组。
1 | var str = " How are you doing today?" |
经验:
- 检验格式(邮箱格式、IP格式)是否正确,用test()
- 抓取信息(如所有手机号),用exec()、match()
- 替换敏感词汇,用replace()
常见的正则表达式校验
校验数字的表达式
1 | 1.数字:^[0-9]*$ |
校验字符的表达式
1 | 1. 汉字:^[\u4e00-\u9fa5]{0,}$ |
特殊需求表达式
1 | 1.Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ |