正则表达式是一种强大的文本匹配工具,它可以帮助开发人员处理各种复杂的文本操作。在使用正则表达式时,我们经常会看到各种不同的“标志”。那么这些“标志”究竟是什么意思呢?
标志列表
下面列出了几个常用的正则表达式标志:
i
: 忽略大小写g
: 全局搜索m
: 多行搜索s
: 让.
匹配任意字符,包括换行符u
: 启用 Unicode 模式y
: 粘性搜索
忽略大小写 (i
)
正则表达式默认是区分大小写的,但当你在表达式后面添加 i
标志时,它将忽略大小写。例如,/hello/i
将匹配 "hello"
、"Hello"
、"HELLO"
等。
const regex = /hello/i; console.log(regex.test("hello")); // true console.log(regex.test("Hello")); // true console.log(regex.test("HELLO")); // true
全局搜索 (g
)
正则表达式默认只会匹配第一个匹配项,但当你在表达式后面添加 g
标志时,它将全局搜索匹配项。例如,/hello/g
将匹配字符串中的所有 "hello"
。
const regex = /hello/g; console.log("hello world, hello JavaScript".match(regex)); // ['hello', 'hello']
多行搜索 (m
)
正则表达式默认只会匹配第一行,但当你在表达式后面添加 m
标志时,它将多行搜索匹配项。例如,/^hello/m
将匹配每一行开头的 "hello"
。
const regex = /^hello/m; console.log("hello world\nhello JavaScript".match(regex)); // ['hello', 'hello']
让 .
匹配任意字符,包括换行符 (s
)
正则表达式默认不会匹配换行符(\n
),但当你在表达式后面添加 s
标志时,它将匹配任意字符,包括换行符。
const regex = /hello.world/s; console.log(regex.test("hello\nworld")); // true
启用 Unicode 模式 (u
)
正则表达式默认是按照 ASCII 字符集进行匹配的,但当你在表达式后面添加 u
标志时,它将启用 Unicode 模式进行匹配。例如,/\u{20BB7}/u
可以匹配 Unicode 字符串 "𠮷"
。
const regex = /\u{20BB7}/u; console.log(regex.test("𠮷")); // true
粘性搜索 (y
)
正则表达式默认从上次匹配位置开始进行匹配,但当你在表达式后面添加 y
标志时,它会从上一次匹配的结束位置继续搜索。粘性搜索只能用在全局标志 g
中。
const regex = /hello/yg; console.log(regex.exec("hello world, hello JavaScript")); // ['hello'] console.log(regex.exec("hello world, hello JavaScript")); // ['hello']
总结
正则表达式中的标志可以帮助我们对文本进行更加灵活和准确的匹配。了解各个标志的含义及用法可以提高我们的开发效率,让我们在处理文本时游刃有余。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/14171