持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情
- 边界
- ^ 开头 注意不能紧跟于左中括号的后面
- /^hello/.test('hello javascript') => true
- /^javascript/.test('hello javascript') => false
- $ 结尾
- /javascript$/.test('hello javascript') => true
- /hello$/.test('hello javascript') => false
- ^ 开头 注意不能紧跟于左中括号的后面
- 预定义
- . [^\n\r] 除了换行和回车之外的任意字符
- \d [0-9] 数字字符
- \D [^0-9] 非数字字符
- \s [\t\n\x0B\f\r] 空白字符
- \S [^\t\n\x0B\f\r] 非空白字符
- \w [a-zA-Z_0-9] 单词字符(所有的字母/数字/下划线)
- \W [^a-zA-Z_0-9] 非单词字符
- 量词
- {n} 硬性量词 对应零次或者n次
- {n,m} 软性量词 至少出现n次但不超过m次(中间不能有空格)
- {n,} 软性量词 至少出现n次(+的升级版)
- ? 软性量词 出现零次或一次
-
- 软性量词 出现零次或多次(任意次)
-
- 软性量词 出现一次或多次(至少一次)
- 分组
- 虽然量词的出现能帮助我处理一排紧密相连的同类型字符,但这是不够的,我们用中括号表示范围内选择,大括号表示重复次数。如果想获取重复多个字符,我们就要用小括号进行分组。
- /(bye){2}/.test('byebye') => true
- /(bye){2}/.test('bye') => false
- 虽然量词的出现能帮助我处理一排紧密相连的同类型字符,但这是不够的,我们用中括号表示范围内选择,大括号表示重复次数。如果想获取重复多个字符,我们就要用小括号进行分组。
- 或操作符
- 可以使用竖线(|)字符表示或者的关系
- /a|bcd/ 匹配a或者bcd字符
- /(ab)+|(cd)+/ 匹配出现一次或多次的ab或者cd
- 可以使用竖线(|)字符表示或者的关系
- 分组的反向引用
- 反向引用标识是对正则表达式中的匹配组捕获的子字符串进行编号,通过“\编号(在表达式中)”,“$编号(在表达式外)”进行引用。从1开始计数
- /(bye)\1/.test('byebye') => true
- /(bye)\1/.test('bye') => false
- '123456'.replace(/(\d{3})*(\d{3})/,'1) => '456123'
- '123456'.replace(/(\d{3})*(\d{3})/,function(match,2){return 1} => '456123'
- 反向引用标识是对正则表达式中的匹配组捕获的子字符串进行编号,通过“\编号(在表达式中)”,“$编号(在表达式外)”进行引用。从1开始计数
- 正文字符
- 匹配中文:[\u4e00-\u9fa5]
- /[\u4e00-\u9fa5]/+/.test('中文内容') => true
- /[\u4e00-\u9fa5]/+/.test('aaa') => false
- 匹配中文:[\u4e00-\u9fa5]