JavaScript 正则相关的 api
如果你已掌握JavaScript RegExp
相关的api
,可以跳过本章的学习;你也可以前往MDN 的 RegExp学习这些前置知识。
声明
在JavaScript
中,想要声明一个正则表达式有三种方式:
- 字面量
const regexp = /pattern/flags;
- 构造函数
const regexp = new RegExp(/pattern/, "flags");
// 或者
const regexp = new RegExp("pattern", "flags");
- 工厂方法
const regexp = RegExp(/pattern/, "flags");
// 或者
const regexp = RegExp("pattern", "flags");
其中字面量
方式最常用。
说明
pattern
:正则表达式的文本flags
:要添加的标志的字符串
flags
g
(global,全局匹配)
找到所有的匹配,而不是在第一个匹配之后停止。
i
(ignoreCase,忽略大小写)
匹配时不区分大小写,如果 u 标志也被启用,使用 Unicode 大小写折叠。
m
(multiline,多行匹配)
将开始字符^
和结束字符$
视为在多行上工作。换句话说,匹配每一行的开头或结尾 each line (由\n
或者\r
分隔),而不仅仅是整个输入字符串的开头或结尾。
s
(dotAll,点号匹配所有字符)
允许.
去匹配新的行。
u
(unicode)
使用unicode
码的模式进行匹配。
y
(sticky,粘性匹配)
搜索是否具有粘性,即仅从正则表达式的lastIndex
属性表示的索引处开始搜索。
RegExp api
regexp.exec(str)
一个在字符串中执行查找匹配的RegExp
方法,它返回一个数组(未匹配到则返回null
)。
可前往MDN 查看详细的 RegExp#exec()用法。
regexp.test(str)
一个在字符串中测试是否匹配的RegExp
方法,它返回true
或false
。
可前往MDN 查看详细的 RegExp#test()用法。
String api
str.match(regexp)
一个在字符串中执行查找匹配的String
方法,它返回一个数组,在未匹配到时会返回null
。
可前往MDN 查看详细的 String#match()用法。
str.matchAll(regexp)
一个在字符串中执行查找所有匹配的String
方法,它返回一个迭代器(iterator
)。
可前往MDN 查看详细的 String#matchAll()用法。
str.search(regexp)
一个在字符串中测试匹配的String
方法,它返回匹配到的位置索引,或者在失败时返回-1
。
可前往MDN 查看详细的 String#search()用法。
str.replace(regexp)
一个在字符串中执行查找匹配的String
方法,并且使用替换字符串替换掉匹配到的子字符串。
可前往MDN 查看详细的 String#replace()用法。
str.split(regexp)
一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String
方法。
可前往MDN 查看详细的 String#split()用法。
注意
- 如果你只是为了判断是否匹配,请使用
RegExp#test()
方法; - 如果你只是为了查找在字符串中匹配的索引,请使用
String#search()
方法; - 如果你只是为了找出所有匹配正则表达式的字符串而又不关心捕获组,请使用
String#match()
方法。