-
字符类
字符 含义 [xyz][a-c] 一个字符类,匹配包含在方括号中的任何字符.可以使用连字符(-)指定字符范围, 但如果连字符出现在方括号中的第一个或最后一个字符,则视为普通字符 [^xyz][^a-c] 否定或补充字符类,匹配不包含在方括号中的任意字符.连字符作用同上 . 匹配除行终止符之外的任何单个字符 \d 匹配任何数字. \d = [0-9] \D 匹配任何非数字的字符. \D = [^0-9] \w 匹配任何基本拉丁字母中的字母数字下划线. \w = [A-Za-z0-9_] \W 匹配任何不是来自基本拉丁字母的单次字符. \W = [^A-Za-z0-9_] \s 匹配单个空白字符. 包括空格, 制表符,换页符等 \S 匹配除空格以外的单个字符 \t 匹配水平制表符 \r 匹配回车符 \n 匹配换行符 \v 匹配垂直制表符 \f 匹配换页符 x|y 匹配 x 或 y -
量词
字符 含义 * 匹配 0 次或多次 + 匹配 1 次或多次, = ? 匹配 0 次或 1 次, 如果在任何量词 *, + ? {} 之后使用,则使量词是非贪婪(匹配最小次数), 而不是默认的贪婪模式(匹配最大次数) {n}
n 为正整数, 匹配 n 次 {n,}
至少匹配 n 次 {n,m}
m > n, 最少匹配 n 次, 最多匹配 m 次 -
组和范围
字符集 含义 (x) 捕获组: 匹配 x 并记住匹配项.捕获组会带来性能损失, String.match()
不会返回捕获组,String.matchAll()
获取所有匹配项(? x) 具名捕获组: 匹配 x 并将其存储在返回的匹配项的 groups 属性中. "web-doc".match(/-(?<customName>\w)/).groups
=>{customName: "d"}
(?:x) 非捕获组: 匹配 x, 但不记得匹配. -
断言
字符 含义 ^ 匹配输入的开头. /^A/
匹配不了 "an A" 中的 "A", 但是可以匹配 "An A" 中开头的 "A"$ 匹配输入的结束 \b 匹配单词边界. /\bm/
可以匹配 "moon" 中的 "m", 匹配不了 "noom" 中的 "m"\B 匹配非单词边界 x(?=y) 先行断言: x 被 y 跟随时匹配 x, 匹配结果中不包含 y. /x(?=y|z)/
: x 后跟有 y 或 z 的情况下才会得到匹配, 不过, 匹配结果中不包含 y 或 zx(?!y) 先行否定断言: x 没有被 y紧跟随时匹配 x (?<=y)x 后行断言: x 跟随 y的情况下匹配 (?<!y)x 后行否定断言: x 不跟随 y 时匹配 x