正则是如何创建的呢?
有两种方法:
1、通过构造函数创建
var reg = new RegExp('reg');
2、通过字面量的方式创建
var reg = /reg/
正则的三种模式
1、 i 忽略大小写
2、 g 全局匹配
3、 m 多行匹配
例如:var reg = /ab/i
相当于 var reg = /[aA][bB]/
量词:
先看一个例子:
var reg = /[0-9]{4} /
它的意思是匹配4位0-9的数字
量词一般都是写在{}
的里面,它只控制它前面的一位,如果想要控制多个需要用()
分组,当然它也有其他的表示方法例如:
?
代表的意思是0或1,相当于{0,1},⚠️量词可以是范围
*
是有没有都可以 ,等价于{0,}
+
是至少匹配一个,等价于{1,}
.
是任意字符
定位符
^
匹配输入字符串开始的位置。
$
匹配输入字符串结尾的位置。
\b
匹配一个单词边界,即字与空格间的位置。
\B
非单词边界匹配。
\w
匹配字母、数字、下划线。等价于’[A-Za-z0-9_]’。
\W
匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_]’。
\d
匹配一个数字字符。等价于 [0-9]。
\D
匹配一个非数字字符。等价于 [^0-9]。
… 还有好多
特殊字符
要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 放在它们前面。
反向引用
对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式。每个缓冲区都可以使用 \n 访问
例如:\1 指定第一个子匹配项。
var reg = /(ab)c\1/
贪婪匹配
正则默认的是贪婪匹配,回量词允许的最大长度
量词后面加上?
开启非贪婪匹配(量词允许的最小长度)
var reg = /\w{3,6}/
console.log(reg.exec("asdasdsadsadd"))
结果: asdasd
var reg = /\w{3,6}?/
console.log(reg.exec("asdasdsadsadd"))
结果: asd
前瞻性匹配
(?=exp)
正向前瞻 匹配后面满足表达式exp的位置
(?!exp)
负向前瞻 匹配后面不满足表达式exp的位置
方法
- 字符串方法
search 检索与正则表达式匹配的值
match 找到一个或多个正则表达式的匹配
replace 替换与正则表达式匹配的字符串
split 把字符串分割成数组
- 正则方法
test 检索字符串中指定的值,返回true或false
exec 检索字符串中指定的值,返回找到的值