前言
正则是用于匹配字符串中字符组合的模式,常用在格式校验中。对正则的应用并不深入,那就写一片文章来边学边用吧。
Javascript语言内置RegExp对象,用于创建一个正则表达式,并提供了几个十分便利的Api。
创建一个正则表达式
创建正则字面量:
const regex1 = /ab+c/;
const regex2 = /^[a-zA-Z]+[0-9]*\W?_$/gi;
此方法用于创建不变的正则匹配模式比较方便。
调用RegExp对象的构造函数:
let regex1 = new RegExp('ab+c');
let regex2 = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/,"gi");
此方法可接收外源匹配模式,当你不知道具体的模式,如需要接收用户输入作为匹配模式时,可以讲输入值传入,生成正则表达式。
常用特殊字符
| 字符 | 含义 |
|---|---|
| \ | 转义符 |
| ^ | 匹配输入的开始 |
| $ | 匹配输入的结束 |
| * | 匹配前面一个表达式0次或多次 |
| + | 匹配前面一个表达式1次或多次,等价于{1,},贪婪模式 |
| ? | 匹配前面一个表达式0次或1次,等价于有或无。 |
| . | 匹配除换行符之外的任何单个字符 |
| x|y | 匹配‘x’或者‘y’ |
| {n} | 匹配前面一个字符出现n次 |
| {n, m} | 匹配前面一个字符出现n-m次 |
| [xyz] | 匹配字符集 |
| [^xyz] | 匹配反向字符集 |
| \b | 匹配一个词的边界 |
| \d | 匹配一个数字 |
| \D | 匹配一个非数字字符 |
| \s | 匹配一个空白字符,包括空格,制表符,换页符和换行符 |
| \S | 匹配一个非空白符 |
| \w | 等价于[A-Za-z0-9_] |
正则表达式方法
| 方法 | 描述 |
|---|---|
| exec | 一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。 |
| test | 一个在字符串中测试是否匹配的RegExp方法,它返回true或false。 |
| match | 一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。 |
| search | 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。 |
| replace | 一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。 |
| split | 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。 |