边界、预定义类

78 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情

  • 边界
    • ^ 开头 注意不能紧跟于左中括号的后面
      • /^hello/.test('hello javascript') => true
      • /^javascript/.test('hello javascript') => false
    • $ 结尾
      • /javascript$/.test('hello javascript') => true
      • /hello$/.test('hello javascript') => false image.png
  • 预定义
    • . [^\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] 非单词字符 image.png
  • 量词
    • {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})/,'22*1) => '456123'
      • '123456'.replace(/(\d{3})*(\d{3})/,function(match,1,1,2){return 2++2+'*'+1} => '456123' image.png
  • 正文字符
    • 匹配中文:[\u4e00-\u9fa5]
      • /[\u4e00-\u9fa5]/+/.test('中文内容') => true
      • /[\u4e00-\u9fa5]/+/.test('aaa') => false