正则 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