正则表达式(RegExp)
概述:正则表达式是一个字符串匹配利器,可以帮助我们搜索、获取、代替字符串
正则表达式主要由两部分组成:模式(patterns)和修饰符(flags)
方法 | 描述符 |
exec | 一个在字符串中执行查找匹配的 RegExp 方法,它返回一个数组(未匹配到则返回 null)。 |
test | 一个在字符串中测试是否匹配的 RegExp 方法,它返回 true 或 false。 |
match | 一个在字符串中执行查找匹配的 String 方法,它返回一个数组,在未匹配到时会返回 null。 |
matchAll | 一个在字符串中执行查找所有匹配的 String 方法,它返回一个迭代器(iterator)。 |
search | 一个在字符串中测试匹配的 String 方法,它返回匹配到的位置索引,或者在失败时返回-1。 |
replace | 一个在字符串中执行查找匹配的 String 方法,并且使用替换字符串替换掉匹配到的子字符串。 |
split | 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中 的 String 方法 |
修饰符flag
flag | 含义 |
g | 全部的,全部都要匹配 |
i | 忽略大小写 |
m | 多行匹配 |
规则 - 字符类
字符 | 含义 |
\d (digit) | 数字:从0到9的字符 |
\s (space) | 空格符号 |
\w (word) | “单字”字符,拉丁字母或者数字下划线 |
. (点) | 它与"除换行符之外的任何字符"匹配 |
反向类:
- \D 非数字:除 \d 以外的任何字符,例如字母。
- \S 非空格符号:除 \s 以外的任何字符,例如字母。
- \W 非单字字符:除 \w 以外的任何字符,例如非拉丁字母或空格。
规则 - 锚点
符号 ^ 和符号 $ 在正则表达式中具有特殊的意义,它们被称为“锚点”
- 符号 ^ 匹配文本开头;
- 符号 $ 匹配文本末尾;
词边界: \b (一下位置对应 \b)
规则 - 转义字符串
要把特殊字符作为常规字符来使用,只需要在它前面加个反斜杠;
例如:[] \ ^ $ . | ? * + ( )
集合(Sets)和范围(Ranges)
有时候我们只要选择多个匹配字符的其中之一就可以:
- 在方括号 […] 中的几个字符或者字符类意味着“搜索给定的字符中的任意一个”;
集合(Sets)
比如说,[eao] 意味着查找在 3 个字符 ‘a’、‘e’ 或者 `‘o’ 中的任意一个;
范围(Ranges)
- 方括号也可以包含字符范围;
- 比如说,[a-z] 会匹配从 a 到 z 范围内的字母,[0-5] 表示从 0 到 5 的数字;
- [0-9A-F] 表示两个范围:它搜索一个字符,满足数字 0 到 9 或字母 A 到 F;
- \d —— 和 [0-9] 相同; \w —— 和 [a-zA-Z0-9_] 相同;
量词(Quantifiers)
用来形容我们所需要的数量的词被称为量词( Quantifiers )。
数量 {n}
- 确切的位数:{5}
- 某个范围的位数:{3,5}
缩写:
- +:代表“一个或多个”,相当于 {1,}
- ?:代表“零个或一个”,相当于 {0,1}。换句话说,它使得符号变得可选;
- *:代表着“零个或多个”,相当于 {0,}。也就是说,这个字符可以多次出现或不出现;
贪婪(Greedy)和惰性(lazy)模式
贪婪模式:默认情况下的匹配规则是查找到匹配的内容后,会继续向后查找,一直找到最后一个匹配的内容
懒惰模式:懒惰模式中的量词与贪婪模式中的是相反的。 只要获取到对应的内容后,就不再继续向后匹配。
更多正则查询: https://c.runoob.com/front-end/854/
2022.0713