Glossary

75 terms from "正则表达式:模式匹配入门." Look them up when you get stuck; the first mention in the text carries a hover definition.

TermDefinitionSource
\d匹配任意一个数字的简写字符类,等价于 [0-9]。MDN: Character classes
\w匹配一个「单词」字符的简写:任意字母、数字或下划线,等价于 [A-Za-z0-9_]。MDN: Character classes
\s匹配一个空白字符的简写:空格、制表符、换行等,一次只匹配一个。MDN: Character classes
正则表达式用来在字符串里匹配字符组合的模式:你交给引擎一个模式和一个字符串,它告诉你模式是否出现、出现在哪里。MDN: Regular expressions (JavaScript Guide)
字面量模式里只匹配自己的字符,比如 /cat/ 里的 c、a、t 各自只匹配同一个字符。MDN: Regular expressions (JavaScript Guide)
直接匹配只由字面量产生的匹配:模式的确切字符序列在字符串里被原样找到,不涉及任何特殊字符。MDN: Regular expressions (JavaScript Guide)
等于整个字符串初学者最常带进来的错误要求:字面量模式只要能在字符串里面被找到就算成功,并不需要和整串相等。MDN: Regular expressions (JavaScript Guide)
元字符模式里充当指令而不是字母的特殊字符,如 . * + ? ^ $ [ ] ( ) 和 \。MDN: Regular expressions (JavaScript Guide)
testRegExp 的方法,回答「这个模式是否出现在字符串里的任何位置」,返回 true 或 false。MDN: Regular expressions (JavaScript Guide)
matchString 的方法,运行模式后返回实际匹配到的文本(一个数组),而不是布尔值。MDN: String.prototype.match()
RegExp两条斜杠之间的模式所创建的 JavaScript 对象类型,也是 test 这类模式侧方法的归属方。MDN: Regular expressions (JavaScript Guide)
索引 0 的元素匹配成功后结果数组的第一个槽位,永远存放模式匹配到的整段文本。MDN: String.prototype.match()
index匹配结果上的一个额外属性,给出匹配在被搜索字符串中的起始位置。MDN: String.prototype.match()
区分大小写默认的匹配行为:字面量只匹配大小写相同的同一个字符,所以 /QUICK/ 匹配不到 "quick"。MDN: Regular expressions (JavaScript Guide)
第一次出现不带全局标志时一次运行返回的东西:引擎从左往右扫描,在模式第一次成功的地方停下。MDN: String.prototype.match()
字符类写在方括号里的集合,恰好匹配集合中的一个字符,如 [abc]。regular-expressions.info: Character Classes
范围([a-d])字符类内部用连字符表示的一段连续字符的简写,[a-d] 等价于 [abcd]。MDN: Character classes
取反字符类方括号内最前面放一个插入符的字符类,匹配任何不在集合里的单个字符,如 [^a-z]。regular-expressions.info: Character Classes
开头的插入符放在方括号内部最前面的 ^,它对字符类取反;同一个符号出现在方括号外面时含义完全不同。regular-expressions.info: Character Classes
\S\s 的大写对应形式,匹配一个不是空白的字符。MDN: Character classes
点号(.)匹配除行终止符之外任意单个字符的元字符,除非打开 s(dotAll)标志。MDN: Character classes
行终止符\n、\r 这一族换行字符,默认标志下点号拒绝匹配它们。MDN: Character classes
s(dotAll)标志打开后取消点号的行终止符例外,让点号真正匹配包括换行在内的任意字符。MDN: Character classes
转义在元字符前面放一个反斜杠,剥掉它的特殊能力,让它按字面匹配。MDN: Regular expressions (JavaScript Guide)
字面量的点输入里一个真正的句点,要靠把点转义成 \. 来匹配,而不是留着它当「任意字符」的元字符。MDN: Character classes
单词字符字母、数字和下划线。`\b` 是否成立,取决于交界两侧其中一个是单词字符、另一个不是。MDN: Assertions (anchors and boundaries)
量词紧跟在一个条目后面的元字符,说明该条目重复多少次。MDN: Quantifiers
0 次或更多(*)* 量词,把前面的条目重复任意次数,包括一次也不出现。MDN: Quantifiers
1 次或更多(+)+ 量词,要求前面的条目至少出现一次,然后有多少要多少。MDN: Quantifiers
0 次或 1 次(?)? 量词,允许前面的条目出现零次或一次,如 colou?r。MDN: Quantifiers
{n}精确计数量词,让前面的条目恰好出现 n 次。MDN: Quantifiers
{n,m}有界计数量词,让前面的条目至少出现 n 次、至多 m 次。MDN: Quantifiers
{n,}开放计数量词,让前面的条目出现 n 次或更多,没有上限。MDN: Quantifiers
前面的条目量词左边紧挨着的那一个 token——一个字面量、一个字符类,或(后面课里的)一个分组——它是量词唯一会重复的东西。MDN: Quantifiers
单个 token量词的作用域规则:它永远只附着在恰好一个 token 上,绝不覆盖模式里更长的一段。MDN: Quantifiers
空匹配一次零长度的成功匹配,允许零次重复的量词就能产生它,例如 /z*/ 跑在不含 z 的字符串上。MDN: Quantifiers
精确计数用 {n} 把重复次数钉死在一个固定数字上,这是五位邮编这类定长格式真正需要的东西。MDN: Quantifiers
宽松模式量词允许的次数比真实格式允许的更多的模式,会让畸形输入通过校验。MDN: Quantifiers
锚点只匹配**位置**、不匹配字符的元字符。`^` 标记字符串开头、`$` 标记结尾、`\b` 标记词边界;它们本身不进入匹配结果的文本。MDN: Assertions (anchors and boundaries)
零宽(zero-width)锚点的共同性质:它在某个位置上匹配成功,但匹配长度为 0,不消耗任何字符。MDN: Assertions (anchors and boundaries)
零长度词边界匹配的长度:`\b` 和 `^`、`$` 一样是锚点,它在一个叫做词边界的位置上匹配,而这个匹配是零长度的。regular-expressions.info: Word Boundaries
词边界(word boundary)`\b`,匹配单词字符与非单词字符之间的位置,也包括字符串的开头和结尾。它的用途是匹配完整单词。regular-expressions.info: Word Boundaries
非单词字符单词字符之外的字符,比如空格和标点。`\b` 匹配在单词字符与非单词字符的交界处。MDN: Assertions (anchors and boundaries)
完整单词两侧都有词边界的一段单词字符。`/\bcat\b/` 匹配作为独立单词的 "cat",不匹配 "category" 或 "scatter" 里的 "cat"。regular-expressions.info: Word Boundaries
校验器两端都上锚的模式,如 `/^\d{5}$/`,要求**整个**字符串恰好是这个模式、再无其他。MDN: Assertions (anchors and boundaries)
前缀检查只带开头锚点、没有结尾锚点的模式实际做的事:它只要求开头对,后面还能挂任何东西。MDN: Assertions (anchors and boundaries)
位置 0`^` 锚定的位置,即字符串的最开头。`/^cat/` 只在 "cat" 位于位置 0 时匹配。MDN: Assertions (anchors and boundaries)
不消耗任何字符锚点的行为方式:它们把匹配从两侧圈起来,但不给匹配结果添加任何字符。MDN: Assertions (anchors and boundaries)
输入的两端两个锚点标记的位置:`^` 在开头、`$` 在结尾。合起来 `^…$` 就是「整个字符串恰好是它」。MDN: Assertions (anchors and boundaries)
多行 `m` 标志加上它之后,`^` 和 `$` 还会在每一行的开头和结尾匹配,而不只是整个字符串的两端。MDN: Assertions (anchors and boundaries)
^…$两端都上锚的写法,读作「开头、然后这个模式、然后结尾」,即整个字符串恰好是它、前后都没有余地。MDN: Assertions (anchors and boundaries)
捕获组(capturing group)用圆括号包起来的一段模式。它既把 token 捆成一束供量词作用,又记住自己匹配到的内容供事后取出。MDN: Groups and backreferences
非捕获组(non-capturing group)`(?:…)`,把 token 捆在一起但不记住匹配内容,因此不会往结果数组里添加条目。当圆括号只是为了托住量词或一段备选时用它。MDN: Groups and backreferences
(?:…)非捕获组的写法。它分组但不捕获:匹配到的子串无法从结果数组的元素里取回。MDN: Groups and backreferences
析取(disjunction)`|` 分隔多个备选项,任何一个备选匹配上输入,整个析取就算匹配。引擎先试左边、失败再试右边。MDN: Disjunction (the | operator)
竖线(|)提供备选的选择运算符:`/cat|dog/` 匹配 "cat" 或 "dog"。它在正则里优先级最低。MDN: Disjunction (the | operator)
优先级最低`|` 在正则表达式里的优先级性质:它在尽可能宽的位置把模式劈开。要限定作用范围,必须把备选包进组里。MDN: Disjunction (the | operator)
索引 0`match` 返回数组的第一个位置,永远是整个匹配的文本,而不是任何捕获组的内容。MDN: String.prototype.match()
索引 1`match` 结果数组里第一个捕获组的文本所在位置。第二个组在索引 2,依此类推。MDN: String.prototype.match()
第一个组模式里最左边那对圆括号,它捕获的文本出现在匹配数组的索引 1。MDN: Groups and backreferences
第二个组模式里第二对左圆括号所开启的捕获组,其文本出现在索引 2。MDN: Groups and backreferences
与左圆括号的出现顺序一致捕获组在结果数组里的排列规则:按各组左圆括号在模式中从左到右出现的顺序编号。MDN: Groups and backreferences
圆括号之外不在任何圆括号里的部分只参与匹配、不被捕获。`(\d{2}):(\d{2})` 里的 `:` 匹配了冒号但不进任何组。MDN: Groups and backreferences
匹配数组`match` 在不带全局标志时返回的数组:索引 0 是整个匹配,之后依次是各捕获组的文本,另带 `index` 和 `input` 属性。MDN: String.prototype.match()
不带全局标志`match` 的这种用法只返回第一个完整匹配及其捕获组,结果与 `exec` 相同,因此捕获组才会出现在索引 1 及之后。MDN: String.prototype.match()
贪婪(greedy)量词的默认行为:`*`、`+` 尽可能多地重复匹配,把前面的 token 重复尽可能多次,再往回退出刚好够让模式剩余部分匹配的量。MDN: Quantifiers
懒惰(lazy,非贪婪)在量词后面紧跟一个 `?` 得到的行为:一旦达到最少匹配次数就停下,重复尽可能少的次数。regular-expressions.info: Repetition (greedy and lazy)
懒惰修饰符`?` 紧跟在**另一个**量词后面时(`+?`、`*?`、`{2,5}?`)的角色。单独跟在普通 token 后面时,它是「0 次或 1 次」的量词。MDN: Quantifiers
尽可能少懒惰量词的重复策略:`.+?` 把点重复尽可能少的次数,每吃一个字符就检查模式剩余部分能否匹配,非继续不可才继续。regular-expressions.info: Repetition (greedy and lazy)
.+?懒惰的「一个或多个任意字符」。配上转义后的定界符,就是从长字符串里提取第一段被定界内容的标准形状。MDN: Quantifiers
定界符包住你想提取内容的两个字面量字符,比如引号、方括号或圆括号。它们若本身是元字符,就必须转义。regular-expressions.info: Repetition (greedy and lazy)
转义后的字面量圆括号`\(` 和 `\)`,匹配文本里真正的圆括号字符。必须转义,因为圆括号本身是分组的元字符。MDN: Regular expressions (JavaScript Guide)
语义合法性正则校验不到的那一层:`/^\d{4}-\d{2}-\d{2}$/` 检查的是形状而非含义,所以 "2024-99-99" 能通过它。MDN: Assertions (anchors and boundaries)
ISO 日期`YYYY-MM-DD` 形状:四位数字、连字符、两位数字、连字符、两位数字。校验它用 `/^\d{4}-\d{2}-\d{2}$/`。MDN: Quantifiers
提取器带捕获组、通常**不**上锚的模式,用来从更长的字符串里把片段拽出来,与两端上锚的校验器分工不同。MDN: String.prototype.match()