0%
正则基本概念
- 正则基础规则
- 字符模式 (匹配单个字符串)
- 字符组
- [abc] a或b或c (匹配这些字符)
- [^abc]不是 a 或 b 或 c 的其他字符(排除这些字符)
- [a-z] 匹配a-z
- [g-zA-F1-5] 匹配小写 g 到 z、大写 A 到 F、数字 1 到 5
- 转义字符
.任意字符
\s 空格
\S 非空格
\d 数字
\D 非数字
\w 字符(字母+数字+下划线)
\W 非字符
\t tab
\n 换行
\r 回车
- 捕获和引用
- 捕获组()
- (hallo) 匹配 hallo,且捕获括号内内容
- (捕获组的捕获顺序,按左括号从左到右为 1234…)
- 正则内引用 \1
- 结果引用 (replace第二参数的特殊字符)
$1 按捕获顺序,例如:abcd.replace(/(ab)/, '$1,')
$& 匹配的整个子串
- $` 匹配子串的左边文本(键盘左侧的反引号)
- $’ 匹配子串的右边文本(键盘右侧的引号)
- $$ 转义 $
- 组合模式(正则串的单次组合)
- 或
|
h(a|e)llo 匹配 hallo 或 hello(切换匹配(并捕获))
- 量词(左边的 a 可以是任意正则模式)
a+ 匹配 ‘a、’aa’(至少一个)
a* 匹配 ‘’、’aaa’(零或多个)
a? 匹配 ‘’, ‘a’ (零或一个)
a{3} 匹配aaa (精确的N个)
a{3,} 匹配 ‘aaa’ 到 ‘aaaaaaa…’ (至少n个)
a{3,6} 匹配 ‘aaa’ 到 ‘aaaaaa’(N 到 M 个)
- 非贪婪 (惰性)
a{3,6}? 匹配 ‘aaa’(非贪婪:匹配到越少越好)
- 位置模式(位置不是字符,不具有宽度)
- 转义字符
^ 行开头
$ 行结尾
\b 单词边界
\B 非单词边界
- 断言 (其中的 a 可以是任意子正则)
(?=a) Positive lookahead,右边匹配
(?!a) Negative lookahead,右边不匹配
(?<=a) Positive lookbehind,左边匹配
(?<!a) Negative lookbehind,左边不匹配
- flags
g global,全部(多次)匹配
i case-insensitive,忽略大小写
m multi-line,多行匹配
u unicode,开启 unicode 支持