В этом уроке вы узнаете, как использовать границу слова(\b
) в регулярных выражениях JavaScript.
(\b
) — это якорь, подобный каретке( ^
) и знаку доллара( $
). Он соответствует положению, которое называется «граница слова». Соответствие имеет нулевую длину.
Следующие три положения квалифицируются как границы слов:
- Перед первым символом в строке, если первый символ является символом слова.
- После последнего символа в строке, если последний символ является символом слова.
- Между двумя символами в строке, если один является символом слова, а другой нет.
Проще говоря, граница слова \b
позволяет провести совпадение всего слова с помощью регулярного выражения в следующем виде:
\bword\b
Например, в строке Hello, JS!
следующие позиции квалифицируются как граница слова:
В следующем примере возвращается ‘JS’ потому что ‘Hello, JS!’ соответствует регулярному выражению /\bJS\b/
:
console.log('Hello, JS!'.match(/\bJS\b/)); // true
Выход:
["JS"]
Однако ‘Hello, JScript’ не соответствует /\bJS\b/
:
console.log('Hello, JSscript!'.match(/\bJS\b/)); // null
Обратите внимание, что без \b
/JS/
соответствует как ‘Hello, JS’ так и ‘Hello, JScript’ :
console.log('Hello, JSscript!'.match(/JS/)); // ["JS"] console.log('Hello, JS!'.match(/JS/)); // ["JS"]
Можно использовать границу слова с цифрами.
Например, регулярное выражение \b\d\d\d\d\b
соответствует 4-значному числу, окруженному символами, отличными от \w
:
console.log('ES 2015'.match(/\b\d\d\d\d\b/));
Выход:
["2015"]
В следующем примере используется граница слова для поиска времени в формате 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);
Выход:
["05:30"]
Важно отметить, что \b
в JavaScript не работает для нелатинских слов.
Как вы уже видели, шаблоны \d\d\d\d
и \d\d
использовались для сопоставления четырехзначного или двузначного числа.
Будет проще и гибче, если вы будете использовать квантификаторы, которые будут рассмотрены в учебнике по квантификаторам. По сути, вы можете использовать \d{4}
вместо \d\d\d\d
, что намного короче.