前端-JS正则表达式快速入门

606 阅读4分钟

前言

  正则表达式是对字符串操作的一种逻辑公式,可以检索、替换那些符合某个规则的文本,通过设定的规则来匹配一些字符串,是一个强大的字符串匹配工具。 前端开发中,正则常用在表单输入校验,如账号、密码、手机号、邮箱等格式检查,在前端对用户输入内容进行初次校验,避免不必要的请求。   本文会介绍正则表达式常用的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));

image.png

replace( 正则,新字符串 )

作用: 将符合校验规则的第一个值,用新字符串替换

    let str = "VeryCool666";
    let reg = /[0-9]/;
    let newStr = str.replace(reg, "稀土掘金");
    console.log(newStr); // 输出 VeryCool稀土掘金66

image.png

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]

六、一个好用的正则表达式生成插件

在学习完前边的知识后,你是否掌握了基础的正则表达式书写规则呢?

3FD105DA-8891-4304-B79D-9C46F213B886.png

然而......如果我告诉你,使用插件便可一键生成十分严谨的正则表达式,你不会打我吧😜!

8D74E2EF-795C-4c17-B356-C2715EC62231.png

认真学习还是很有必要的,接下来我就来介绍这款功能强大的正则插件使用方法!

1.使用vscode下载安装插件:any-rule

image.png

2.安装成功使用快捷键 F1 即可快速调出正则窗口

image.png

3.快去搜索你想要的正则吧😉

5F8D8820-1825-44d9-A9D2-5E0EA67A8121.png