本课程建立在量词之上
你将学到
开头与结尾 精确长度 单词边界 非边界
步骤 · 13
- 01零宽猎手讲解
- 02锚定开头狩猎
- 03锚定结尾狩猎
- 04两端锚定——精确匹配狩猎
- 05精确长度狩猎
- 06用花括号计数狩猎
- 07单词边界狩猎
- 08只要完整单词狩猎
- 09非边界狩猎
- 10以大写字母开头狩猎
- 11以数字结尾狩猎
- 12高尔夫:以“ing”结尾狩猎
- 13位置已掌握讲解
正则锚点与单词边界
正则表达式的大部分内容都在匹配字符:字母、数字、点号。锚点匹配的却是位置。它们位于字符之间,不占用任何字符,所以它们告诉正则可以在哪里匹配,而不是匹配什么。
两个主要的锚点是表示文本开头的 ^ 和表示结尾的 $。在前面加上 ^,匹配就必须从第一个字符开始;在后面加上 $,匹配就必须在最后一个字符结束。两个都用,正则就必须覆盖整段文本,这正是检查输入是否恰好是一个代码、数字或日期、别无其他的方法。
单词边界 \b 是单词字符(字母、数字或下划线)与其他任何内容(包括文本边缘)之间的接缝。它让你找到一个完整的单词,而不会在更长的单词里误抓。它的反面 \B 在 \b 不匹配的地方匹配,通常是在单词内部。在狩猎中,要放过那些字母对了、位置不对的单词,锚点往往是最短的办法。
示例
抓住
- redo
- remix
- return
放过
- fire
- pure
- tree
脱字符把
re绑定在前两个字母上,所以只是在中间或结尾含有它的单词都会被放过。抓住
- v1
- v12
- v2026
放过
- v1.2
- xv1
- v
两个锚点都用上,整段文本必须是一个
v再接数字,所以多一个点号、前面多一个字母,或者只有一个光秃秃的v,都会匹配失败。抓住
- pen
- a pen
- pen pal
放过
- open
- pencil
- happen
两侧的边界把
pen当作独立的单词找出来,有别的字母紧挨着时就跳过。抓住
- chairs
- repairs
- fairy
放过
- air
- airy
- chair
两侧都用
\B,要求前后都有单词字符,所以位于单词开头或结尾的air会被放过。
常见错误
- 只锚定一端。
^\d+仍然能匹配12abc,因为没有东西阻止匹配在字母前停下;如果整段文本都必须符合,就加上$。 - 以为
\b认识所有文字。 在 JavaScript 中只有 A-Z、a-z、0-9 和_是单词字符(汉字也不算),所以\bcaf\b会在café内部匹配,co-op里的连字符也算作边界。 - 在字符串里丢了反斜杠。 在 JavaScript 字符串中,
"\b"是退格符,所以要写成new RegExp("\\bpen\\b"),或者直接用字面量/\bpen\b/。
阅读规则:指南中的“锚点与边界” →反复操练:抛锚定位 →
延伸阅读:正则锚点:^、$ 与多行模式详解 →