正则表达式是一种字符串匹配利器,可以帮助我们搜索、获取、替代字符串。它是一种计算机科学的概念,不单单属于某种语言,正则表达式可以在Python、JavaScript、Java等语言中广泛使用。
目录
1.什么是正则表达式?
- 正则表达式(英语:Regular Expression,常常简写成RegExp),又称为正则表示式、正则表示法、规则表达式、常规表示法;
- 正则表达式使用单个字符串来描述,匹配一系列匹配某个句法规则的字符串;
- 很多程序设计语言都支持利用正则表达式进行字符串操作。
2.JavaScript中的正则表达式
在JavaScript中,正则表达式使用RegExp类来创建,但也有对应的字面量的方式:正则表达式主要由两部分组成:模式(patterns)也可以理解为匹配规则和修饰符(flags)
const re1 = new RegExp("hello", "i")
//使用RegExp类创建正则表达式 "hello"是模式 "i"是修饰符
const re2 = /hello/i
//使用字面量创建正则表达式
3.正则表达式的使用方法
有两种使用方法:
- 可以使用正则对象(RegExp)上的实例(exec和test)方法;
- 使用字符串(String)的(match、matchAll、replace、search、split)方法,传入一个正则表达式。
3.1.正则对象的实例方法
exec
一个在字符串中执行查找匹配的 RegExp 方法,它返回一个数组(未匹配到则返回 null)。
let message = "hello ABC, abc ,ASbc, AABC"
const re1 = /abc/ig
console.log(re1.exec(message))
test
一个在字符串中测试是否匹配的 RegExp 方法,它返回 true 或 false。
let message = "hello ABC, abc ,ASbc, AABC"
const re1 = /abc/ig
console.log(re1.test(message)) //true
3.2.字符串的方法
match
一个在字符串中执行查找匹配的 String 方法,它返回一个数组,在未匹配到时会返回 null。
let message = "hello ABC abc ASbc AABC"
const re1 = /abc/ig
const result = message.match(re1)
console.log(result)
matchAll
一个在字符串中执行查找所有匹配的 String 方法,它返回一个迭代器(iterator)。
matchAll正则必须加g修饰符。
let message = "hello ABC abc ASbc AABC"
const re1 = /abc/ig
const result = message.matchAll(re1)
console.log(result)
返回的是一个迭代器,是可迭代的,使用for of循环遍历。
for (const item of result){
console.log(item)
}
search
一个在字符串中测试匹配的 String 方法,它返回匹配到的位置索引,或者在失败时返回-1。
replace
一个在字符串中执行查找匹配的 String 方法,并且使用替换字符串替换掉匹配到的子字符串。
split
一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中
的 String 方法。
4.修饰符flag的使用
常见的修饰符有三个:
g
(global)全部的,匹配全部的
i
&#x