匹配规则
1. 字面量字符和元字符
大部分字符在正则表达式中,就是字面的含义,比如/a/ 匹配,/b/匹配b。如果在正则表达式中,某个字符只表示它字面的含义,那么它们就叫做“字面量字符”(literal characters) 。除了字面量字符以外,还有一部分字符有特殊含义,不代表字面的意思,他们叫做“元字符”(metacharacters)。元字符有:
(1)点字符(.) 匹配除了回车(\r)、换行符(\n)、行分隔符(\u2028)和段分隔符(\u2029)
以外的所有字符。 /c.t/.test('cat') true
(2)位置字符:^ 表示字符串的开始位置,$表示字符串的结束位置 /^test/.test('test123')
(3)竖线符号(|)在正则表达式中表示“或关系” (OR)
2.重复类
模式的精确匹配次数,使用大括号表示({})。{n}表示恰好重复n次,{n,}表示至少重复n次,{n,m}表示重复不少于n次,不多于m次。 /lo{2}k/.test('look')
3.量词符
? 问号表示某个模式出现0次或1次,等同于{0,1}
* 星号表示某个模式0次或多次,等同于{0,}
+表示某个模式出现1次或多次,等同于{1,}
4.字符类
字符类表示有一系列字符可供选择,只要匹配其中一个就可以了,所有可供选择的字符都放在方括号里,比如[xyz]表示x y z之中任选一个匹配。
(1)脱字符(^):如果方括号内的第一个字符是[^],则表示除了字符类之中的字符,其他字符都可以匹配。如果方括号内没有其他字符,只有[^]就表示匹配一切字符,其中包括换行符,而(.)是不包括换行符的。
(2)连字符(-):某些情况下,对于连续序列的字符,连字符(-)用来提供简写形式,表示字符的连续范围。
5.组匹配
正则表达式的括号表示分组匹配,括号中的模式可以用来匹配分组的内容。