0%

正则表达式基本规则

正则基本概念

  • 正则基础规则
    • 正则支持任意朴素字符
      • hello world
    • 正则支持子正则的平行拼接
      • ^h(a|e)?llo\sworld\b.*$
  • 字符模式 (匹配单个字符串)
    • 字符组
      • [abc] a或b或c (匹配这些字符)
      • [^abc]不是 a 或 b 或 c 的其他字符(排除这些字符)
      • [a-z] 匹配a-z
      • [g-zA-F1-5] 匹配小写 g 到 z、大写 A 到 F、数字 1 到 5
    • 转义字符
      • .任意字符
      • \s 空格
      • \S 非空格
      • \d 数字
      • \D 非数字
      • \w 字符(字母+数字+下划线)
      • \W 非字符
      • \t tab
      • \n 换行
      • \r 回车
    • 捕获和引用
      • 捕获组()
        • (hallo) 匹配 hallo,且捕获括号内内容
        • (捕获组的捕获顺序,按左括号从左到右为 1234…)
      • 正则内引用 \1
        • (a,b).\1匹配 ‘ab,ab’
      • 结果引用 (replace第二参数的特殊字符)
        • $1 按捕获顺序,例如:abcd.replace(/(ab)/, '$1,')
        • $& 匹配的整个子串
        • $` 匹配子串的左边文本(键盘左侧的反引号)
        • $’ 匹配子串的右边文本(键盘右侧的引号)
        • $$ 转义 $
      • 组合模式(正则串的单次组合)
          • h(a|e)llo 匹配 hallo 或 hello(切换匹配(并捕获))
        • 量词(左边的 a 可以是任意正则模式)
          • a+ 匹配 ‘a、’aa’(至少一个)
          • a* 匹配 ‘’、’aaa’(零或多个)
          • a? 匹配 ‘’, ‘a’ (零或一个)
          • a{3} 匹配aaa (精确的N个)
          • a{3,} 匹配 ‘aaa’ 到 ‘aaaaaaa…’ (至少n个)
          • a{3,6} 匹配 ‘aaa’ 到 ‘aaaaaa’(N 到 M 个)
        • 非贪婪 (惰性)
          • a{3,6}? 匹配 ‘aaa’(非贪婪:匹配到越少越好)
      • 位置模式(位置不是字符,不具有宽度)
        • 转义字符
          • ^ 行开头
          • $ 行结尾
          • \b 单词边界
          • \B 非单词边界
        • 断言 (其中的 a 可以是任意子正则)
          • (?=a) Positive lookahead,右边匹配
          • (?!a) Negative lookahead,右边不匹配
          • (?<=a) Positive lookbehind,左边匹配
          • (?<!a) Negative lookbehind,左边不匹配
      • flags
        • g global,全部(多次)匹配
        • i case-insensitive,忽略大小写
        • m multi-line,多行匹配
        • u unicode,开启 unicode 支持