首先明确一点,正则表达式在js中本身是一个对象
用途?
主要用在RegExp的exec和test方法,以及String的match、matchAll、replace、search和split方法
创建正则表达式
//以下两种方式等价
//字面量形式包裹在斜杠之间
var re = /ab+c/
//构造函数形式
var re = new RegExp("ab+c)
测试字符串是否满足正则
//test方法,返回true或者false
var re = /[123]/
var str = '1'
var result = re.test(str)
console.log(result) //结果是false
//search方法,找满足正则部分的下标
var re = /\d/ //找阿拉伯数字
var str = 'ahjads123'
var result = re.search(str)
console.log(result) //结果是6,找不到的话返回-1
//exec方法,返回第一个符合条件的结果的数组
var re = /\d/ //找阿拉伯数字
var str = 'ahjads123'
var result = re.exec(str)
console.log(result) //结果是1,因为只要匹配阿拉伯数字就可以,所以到1就直接结束了
//match方法,和上面的exec结果一样,一个是正则表达式提供的,一个是字符串方法
var re = /\d/ //找阿拉伯数字
var str = 'ahjads123'
var result = str.match(re)
console.log(result)
//replace方法,是一个字符串方法仅替换第一个匹配项
var re = /\d/ //找阿拉伯数字
var str = 'ahjads123'
var result = str.replace(re,"a")
console.log(result) //结果是ahjadsa23
正则表达式RegExp
- 特殊符号:
- \d 任意数字,相当于[0-9]
- \s 空⽩字符,相当于[\n\f\r\t]
- \b 单词边界
- \uxxxx 匹配unicode字符
- 区间:
- [0-9] 从0到9的任意数字 [0123456789]
- [13579] 表⽰1、3、5、7、9中任意⼀个数字
- [a-z] 从a到z的任意⼀个⼩写字⺟
- [A-Z] 从A到Z的任意⼀个⼤写字⺟
- [a-zA-Z] 任意⼀个字⺟
- [0-9a-zA-Z] 任意字⺟和数字
- 量词
- a+ ⾄少⼀个a
- a* 0~n个a
- a? 0~1个a
- a{m} m个a
- a{m,n} m~n个a
- 断言
- $ 以......结束
- \b 单词边界
- \B 非单词边界
正则修饰符
- 正常情况下,正则匹配时遇到第一个匹配项就会停止,且忽略大小写
- g全文搜索:var re = new RegExp('l','g') //l是匹配条件,g是修饰符
- i忽略大小写
- m多行搜索