Skip to content

正则 regExp

/[a-z0-9A-Z]/ 表示字符集

\w 等价于 [A-Za-z0-9_] 大小写字母数字和下划线

() 捕获组,可以存储和分组,并且将一连串的字符视作整体,然后应用别的规则

^ :检查前缀:/^user_/ $ :检查后缀:/.(jpg|png)$/

  • 举例:

    • 比如匹配 “http://” 或者 “https://”
    • 最终: /^(https?://)?www.example.com/
  • 举例整行匹配:

    • /^\d{4}$/ :匹配有且仅有四个数字
    • \d digital 数字
    • \w word 字母

如何选择 () 和 [] ?

问:我需要保证整个字符串都符合规范吗? 是 -> 用 ^...$ 把模式包起来。 问:我是在处理一个字符位置的多种选择吗? 是 -> 用字符集 [],例如 /[abc]/ 或 /[^0-9]/。 问:我是在处理一串字符,并且需要... ...把它当成一个整体来重复或设为可选? -> 用 () 来分组。 ...把它从结果里单独拿出来用? -> 用 () 来捕获。 是 -> 用捕获组 ()。

正向后行断言 匹配一个位置

  • “断言" (Assertion),指的是一个位置。

  • (?<=...) 就是 正向后行断言 的语法。

    • 后行 (Lookbehind):意味着它会从当前位置,回头 向左看。
    • 正向 (Positive):意味着它断言,左边的内容必须匹配 ... 中定义的模式。
  • (?<=\w) 匹配一个位置,这个位置的前面必须紧跟着一个单词字符 (A-Z, a-z, 0-9, _)。

举例:下划线转小驼峰

js
const toLowerCamelCase = (word) => {
    return word.replace(/(?<=\w)_(\w)/g,(match,char)=>char.toUpperCase());
}

匹配 < 一堆单词 >:

  • /<[\s\w]+>/g
本站访客数 人次 本站总访问量