前言
正则表达式是对字符串操作的一种逻辑公式,可以检索、替换那些符合某个规则的文本,通过设定的规则来匹配一些字符串,是一个强大的字符串匹配工具。 前端开发中,正则常用在表单输入校验,如账号、密码、手机号、邮箱等格式检查,在前端对用户输入内容进行初次校验,避免不必要的请求。
本文会介绍正则表达式常用的API,带你快速入门,同时还会介绍一种强大的正则表达式插件,帮助你快速生成常见的校验规则。
一、正则表达式的创建📝
1. 构造函数创建🆕
var reg = new RegExp( 校验规则 , 修饰符 ); // 常用修饰符见下文
参数: 参数一:你所定义的校验规则,参数二:用于指定全局匹配、区分大小写的匹配和多行匹配。
2. 字面量创建🔠
var reg = / 校验规则 / 修饰符;
🆚两种创建方式区别
-
在js中一些特定的字符具有特定含义(如
'" & \ n r t b f),如果想输出特定字符为普通字符串,需要在特定字符前加/将其转义成文本格式。 -
构造函数因为传递的是字符串,所以在构造函数创建正则时,
\需要写两个\ \才能表示\// 字面量直接使用 \d var reg = /\d+/g // 构造函数需要转义成 \\d var reg = new RegExp("\\d+", "g") -
字面量创建时,两个斜杠中间包起来的都是元字符,所以如果正则中包含变量,则不能使用字面量方式创建,需要使用构造函数模式。
二、修饰符
| 修饰符 | 作用 |
|---|---|
| i | 忽略大小写,默认大小写敏感 |
| g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) |
| m | 执行多行匹配 |
三、连接符
作用: 正则表达式常用 [ ] 查找某个范围内的字符。
| 表达式 | 作用 |
|---|---|
| [abc] | 查找方括号之间的任何字符 |
| [^abc] | 查找任何不在方括号之间的字符 |
| [0-9] | 查找任何从 0 至 9 的数字 |
| [a-z] | 查找任意一个小写字母 |
| [A-Z] | 查找任意一个大写字母 |
| [A-z] | 查找任意一个字母(无论大小写) |
| [0-9a-zA-Z] | 匹配数字或任意英文字母(无论大小写) |
| [\u4e00-\u9fa5] | 任意一个中文字符 |
| ( ) | 一般与或连用,表示优先级 |
四、元字符
| 元字符 | 作用 |
|---|---|
| ^ | 正则开始 |
| $ | 正则结束 |
| · | 表示任意一个字符 |
| \ | 表示转义字符 |
| + | 表示其前面紧挨着的字符至少出现1次,价 {1, } |
| * | 表示其前面出现的字符至少出现过0次,等价{0, } |
| ? | 表示其前面出现的字符至少出现过0次,至多1次,等价{0,1} |
| | | 表示或 |
| \d | 表示0-9之间的任意一个数字,等价[0-9] |
| \D | 表示非数字,相当于[^0-9] |
| \w | 表示数字、字母、下划线 0-9 a-z A-Z _ |
| \W | 表示除了数字、字母、下划线 |
| \s | 表示任意的空白符,如空格、空白、换行符、制表符等 |
| \S | 表示任意不是空白的字符(除了\s) |
| { m,n } | 表示括号前面紧挨着的字符至少出现 m 个,至多出现 n 个 |
| { m } | 表示括号前面紧挨着的字符只能出现 m 个 |
| { m, } | 示括号前面紧挨着的字符至少出现 m 个 |
五、正则表达式常用方法💡
test(string)
作用: 检查字符串是否与给出的正则表达式相匹配,如果是则返回 true,否则就返回 false。
let reg = /^[0-9]$/g;
let str = "1";
console.log(reg.test(str)); //返回true
exec(string)
作用: 检索字符串中符合正则表达式规则的第一个值。如果字符串中有匹配的值返回一个数组对象,否则返回 null。
let str = "ab0c12d3efg";
let reg = /[0-9]/g;
console.log(reg.exec(str));
replace( 正则,新字符串 )
作用: 将符合校验规则的第一个值,用新字符串替换
let str = "VeryCool666";
let reg = /[0-9]/;
let newStr = str.replace(reg, "稀土掘金");
console.log(newStr); // 输出 VeryCool稀土掘金66
toString
作用: 将正则表达式对象转换为字符串值返回
let reg = new RegExp("[0-9]", "g");
let str = reg.toString();
console.log(str); // 返回:/[0-9]/g
search(正则)
作用: 用正则表达式去匹配字符串,如果匹配成功,就返回符合规则的第一个值的位置,如果匹配失败就返回-1。
let str = "Very0Cool1";
let reg = /[0-9]/;
console.log(str.search(reg)); // 返回 4
match(正则)
作用: 用正则表达式去匹配字符串,如果匹配成功,就返回所有匹配成功的值组成的数组,如果匹配不成功,就返回null。
var str = "Very66Cool88";
var reg = /[0-9]/g;
console.log(str.match(reg)); // 返回[6,6,8,8]
六、一个好用的正则表达式生成插件
在学习完前边的知识后,你是否掌握了基础的正则表达式书写规则呢?
然而......如果我告诉你,使用插件便可一键生成十分严谨的正则表达式,你不会打我吧😜!
认真学习还是很有必要的,接下来我就来介绍这款功能强大的正则插件使用方法!