前言:一般开发中都会接触到正则表达式,作为一名合格的前端,也应该了解一下正则表达式编写原则,便于自己也能快速编写想要的正则表达式。

1、作用(正则表达式是一种字符串匹配的模式)

数据验证:比如电话号码、邮箱等

替换文本:快速找到特定文本,用于替换

快速提取字符串:基于匹配原则,快速从文档中查找或提取子字符串

2、语法(普通字符+特殊字符)

普通字符

[abc] 匹配[...]的所有字符

[^abc] 取反,除了[...]的其他字符

[A-Z] 区间字母A到Z

. 匹配除(\n换行符 \r 回车符)的任何单个字符

\s \S 匹配所有,\s所有空白符,包括换行 \S非空白符,不包括换行

\w 匹配字母、数字、下划线

特殊字符

$ 结尾位置 (匹配$字符----\$

^ 开始位置(匹配$字符----\^

() 子表达式开始和结束(匹配字符----\(   和  \)

* 匹配零次或多次(匹配字符----\*

+ 匹配一次或多次(匹配字符----\+

? 匹配零次或一次(匹配字符----\?

| 两项间的一个(匹配字符----\|

限定符

{n} n为非负整数,匹配n次

{n,} n为非负整数,至少n次

{n,m} n为非负整数,n<=m,最少n次,最多m次

修饰符

i 不区分大小写

g 全局匹配

m 多行匹配

s 特殊字符远点包含换行符

3、常用场景

  • 16进制颜色    /^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/     以#开始 ,6或3个字符(A-F、a-f、0-9)结尾
  • 电话号码  /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/      以1开头,3可跟任一数字(\d),4可跟5-9,5可跟0-3或5-9 ,6后2567其中一个,7后是0-8,8后任一数字,9后是0-3或3-5,其余8位是任意数字(\d{8})
  • 身份证号   /^[1-9]\d{5}(19|20|21)\d{2}(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}[\dX]$/       第一位在0-9区间,后面是5位任意数字,4位年份(19、20、21开头,后两位任意),两位代表月份(0开头的1-9或者是10、11、12),两位日期(01-31),三位顺序码,最后一位是校验码,可数字可X
  • 网址     /^((https?):)?\/\/([^?:/]+)(:(\d+))?(\/[^?]*)?(\?(.*))?/
  • 邮箱    ^[A-Za-z0-9-_\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$       名称有汉字([\ue00-\u9fa5])、字母([a-zA-z])、数字、下划线、中划线,域名有数字、字母、下划线、中划线

4、使用方法

字符串.match(正则):返回符合的字符串,若不满足返回null

字符串.search(正则):返回搜索到的位置,若非一个字符,则返回第一个字母的下标,若不匹配则返回-1

字符串.replace(正则,新的字符串):找到符合正则的内容并替换

正则.test(字符串):在字符串中查找符合正则的内容,满足则返回true,反之为false

说明:new RegExp(规则).test(字符串)和上面写法作用相同

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐