1、字面量字符
/dog/.test("old dog") //true
2、元字符
2.1点字符:匹配除回车(\r
)、换行(\n
) 、行分隔符(\u2028
)和段分隔符(\u2029
)以外的所有字符。
/c.t/.test("cat") //true
/c.t/.test("caat") //false
2.2位置字符用来提示字符所处的位置
// test必须出现在开始位置
/^test/.test('test123') // true
// test必须出现在结束位置
/test$/.test('new test') // true
// 从开始位置到结束位置只有test
/^test$/.test('test') // true
/^test$/.test('test test') // false2.3 竖线符号(
|
)在正则表达式中表示“或关系”(OR),即cat|dog
表示匹配cat
或dog
。/11|22/.test('911') // true
3、转义字符(/)
正则模式中,需要用斜杠转义的,一共有12个字符:
^
、.
、[
、$
、(
、)
、|
、*
、+
、?
、{
和\\
。
4、字符类
所有可供选择的字符都放在方括号内,比如[xyz]
表示x
、y
、z
之中任选一个匹配。
[^xyz]
表示除了x
、y
、z
之外都可以匹配。
[abc]
可以写成[a-c]
,[0123456789]
可以写成[0-9]
,同理[A-Z]
表示26个大写字母。
5、预定义模式
\d
匹配0-9之间的任一数字,相当于[0-9]
。\D
匹配所有0-9以外的字符,相当于[^0-9]
。\w
匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
。\W
除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]
。\s
匹配空格(包括制表符、空格符、断行符等),相等于[\t\r\n\v\f]
。\S
匹配非空格的字符,相当于[^\t\r\n\v\f]
。\b
匹配词的边界。\B
匹配非词边界,即在词的内部。
6、重复类
模式的精确匹配次数,使用大括号({}
)表示。{n}
表示恰好重复n次,{n,}
表示至少重复n次,{n,m}
表示重复不少于n次,不多于m次。
7、量词符
?
问号表示某个模式出现0次或1次,等同于{0, 1}
。*
星号表示某个模式出现0次或多次,等同于{0,}
。+
加号表示某个模式出现1次或多次,等同于{1,}
。