正则表达式:词边界

摘要:在本教程中,您将学习如何在正则表达式中使用词边界。

(\b) 是一个 锚点,类似于插入符号 (^) 和美元符号 ($)。它匹配称为“词边界”的位置。词边界匹配是零长度的。

以下三个位置被视为词边界

  • 如果第一个字符是词字符,则位于字符串第一个字符之前。
  • 如果最后一个字符是词字符,则位于字符串最后一个字符之后。
  • 如果字符串中的两个字符之间一个是词字符,另一个不是,则位于这两个字符之间。

简而言之,词边界 \b 允许您使用以下形式的 正则表达式 匹配整个单词

\bword\bCode language: JavaScript (javascript)

例如,在字符串 Hello, JS! 中,以下位置被视为词边界

以下示例返回 'JS',因为 'Hello, JS!' 与正则表达式 /\bJS\b/ 匹配

console.log('Hello, JS!'.match(/\bJS\b/));Code language: JavaScript (javascript)

输出

['JS', index: 7, input: 'Hello, JS!', groups: undefined]Code language: JavaScript (javascript)

但是,'Hello, JScript'/\bJS\b/ 不匹配

console.log('Hello, JSscript!'.match(/\bJS\b/));Code language: JavaScript (javascript)

输出

nullCode language: JavaScript (javascript)

请注意,如果没有 \b/JS/ 将同时匹配 'Hello, JS''Hello, JScript'

console.log('Hello, JSscript!'.match(/JS/)); 
console.log('Hello, JS!'.match(/JS/)); Code language: JavaScript (javascript)

输出

['JS', index: 7, input: 'Hello, JSscript!', groups: undefined]
['JS', index: 7, input: 'Hello, JS!', groups: undefined]Code language: JSON / JSON with Comments (json)

可以使用词边界与数字一起使用。

例如,正则表达式 \b\d\d\d\d\b 匹配由不同于 \w 的字符包围的 4 位数字。

console.log('ES 2015'.match(/\b\d\d\d\d\b/));Code language: JavaScript (javascript)

输出

['2015', index: 3, input: 'ES 2015', groups: undefined]Code language: JavaScript (javascript)

以下示例使用词边界查找格式为 hh:mm 的时间,例如 09:15

let str = 'I start coding JS at 05:30 AM';
let re = /\b\d\d:\d\d\b/;
let result = str.match(re);

console.log(result);Code language: JavaScript (javascript)

输出

['05:30', index: 21, input: 'I start coding JS at 05:30 AM', groups: undefined]Code language: JavaScript (javascript)

重要的是要注意,\b 不适用于非拉丁字母。

到目前为止,您已经看到过模式 \d\d\d\d\d\d 用于匹配四位数或两位数。

如果您使用将在 量词教程 中介绍的量词,这将更容易、更灵活。您可以使用 \d{4} 代替 \d\d\d\d,这要短得多。

摘要

  • \b 锚点匹配词边界位置。
本教程是否有帮助?