什么是正则
书写一段规则,用于匹配一段字符是否符合规则
创建的时候
1.字面量的形式;
const reg = /abc/
const reg = /\w/ig
2.内置构造函数;
const reg1 = new RegExp('abc')
const reg1 = new RegExp('\\w', 'ig')
正则常用的方法
1.匹配
- test
- 匹配字符串是否符合规则
- 语法:正则.test(字符串)
const reg = /abc
const str = 'qwertyui'
console.log(reg.test(str))
2.捕获
- exec
- 捕获字符串中符合规则的内容
- 语法:正则.exec(字符串) ==补充:== 1.没有捕获到:直接返回一个null; 2.1.捕获到,没有g则永远都会是下标0开始第一个符合条件的,有g则会每次往后捕获,直到捕获完成, 返回null; 2.2 有小括号时,下标0还是正常捕获到的内容,从下标1开始则是每个小括号捕获到的内容。
正则的元字符
普通元字符
- \d 表示一个数字[0-9]
- \D 表示一个非数字(除了[0-9])
- \w 表示数字字母(a-zA-Z)下划线(_)的其中一个
- \W 表示除了数字字母下划线的一个字符
- \s 表示一位空白字符
- \S 表示一位非空白字符
- . 表示一位非换行的任意字符
- \ 表示转义符
边界元字符
- ^ 表示开头
- $ 表示结尾
限定元字符
- 表示前边一个符号出现多少次
-
* 表示0~正无穷次
-
+ 表示1~正无穷次
-
? 表示0~1次
-
{n} 表示只能出现n次
-
{n,} 表示至少出现n次
-
{n,m} 表示至少出现n次,最多出现m次
特殊元字符
- ()
- 含义1:单独当成一个整体
- 含义2:可以单独捕获
- |
- 或
- 分界线是小括号或整个字符串
- []
- 包含(有一个就行,[]实际代表一个字符)
- [^]
- 不包含
- -
- 至
重复元字符
符号:\1 \2...
- 代表第几个小括号的值
正则的标识符
- i 忽略大小写
- g 全局检测或捕获
正则的两大特性
1. 懒惰 正常捕获字符串时,每次都从下标0开始 解决方式:给正则添加一个修饰符g
2.贪婪 每次在捕获时,会尽可能捕获多一些东西 解决方式:添加贪婪限定符
-
贪婪限定符: *、+、{n,}、{n,m}
-
非贪婪限定符: *?、+?、??、{n,}?、{n,m}?