在阅读之前,希望您对正则表达式有过一些使用经验,本文介绍 4 个部分:
^:匹配文本应该在字符串的开头$: 匹配文本应该在字符串的结尾例如 /^(T|t)he/ 匹配 The car is parked in the garage. 中的 The。
对于多行文本,开启g(全局搜索)和m(多行修饰符)标志。例如对于多行字符串:
The car is parked in the garage.
The car is parked in the garage./^(T|t)he/gm 可以匹配两个 The。
特征标群是指写在 (...) 中的子模式。
用途 1: 子模式中可以包含多个字符,它们被视为“一体”。可以搭配*、.、? 使用。
用途 2: 配合|使用。例如 /(ab|ef)c/g 匹配 abc efc 中的 abc 和 efc。
正则表达式默认是贪婪模式,也就是尽可能多的匹配。例如 /.*at/ 匹配 The fat cat sat on the mat. 的全部。可以理解为:从符合匹配的位置开始,尽可能地向后搜索,直到不能向后。
开启惰性匹配的方法是使用 ?,形如 /.*?at/、/.+?at/。例如 /.*?at/ 匹配 The fat cat sat on the mat. 中的 The fat。可以理解为:从符合匹配的位置开始,向后搜索,一旦完成匹配,立即停止。
虽然名字很唬人,但是它很有用。通俗来说,它用来检查符合匹配规则的字符串的前/后是否符合规则。
符号 | 描述 |
|---|---|
?= | 正先行断言-存在 |
?! | 负先行断言-排除 |
?<= | 正后发断言-存在 |
? | 负后发断言-排除 |
对于先行断言?=和?!来说,它们检查“后面”是否符合规则。例如:
\(T|t)he(?=\sfat)\ 匹配 The fat cat sat on the mat. 中的 The\(T|t)he(?!\sfat)\ 匹配 The fat cat sat on the mat. 中的 the对于后发断言,它们检查“前面”是否符合规则。