正则表达式是匹配模式,要么匹配字符,要么匹配位置
1. 匹配字符
1.1 横向模糊匹配
横向模糊指的是,一个正则可匹配的字符串的长度不是固定的,可以是多种情况的。
其实现的方式是使用量词。譬如 {m,n},表示连续出现最少 m 次,最多 n 次。
var regex = /ab{2,5}c/g;
var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc";
console.log( string.match(regex) );
// => ["abbc", "abbbc", "abbbbc", "abbbbbc"]
1.2 纵向模糊匹配
纵向模糊指的是,一个正则匹配的字符串,具体到某一位字符时,它可以不是某个确定的字符,可以有多种可能。
其实现的方式是使用字符组。譬如 [abc],表示该字符是可以字符 “a”、“b”、“c” 中的任何一个。
比如 /a[123]b/ 可以匹配如下三种字符串: “a1b”、“a2b”、“a3b”。
1.3 字符组
- [abc],表示匹配一个字符,它可以是 “a”、“b”、“c” 之一。
- 比如 [123456abcdefGHIJKLM],可以写成 [1-6a-fG-M]。用连字符 - 来省略和简写。
- [^abc],表示是一个除 “a”、“b”、"c"之外的任意一个字 符。字符组的第一位放 ^(脱字符),表示求反的概念。
- 速查表
1.4 量词
1.5 多选分支
2.匹配位置