Граница слова \b – проверка, как ^ и $.
Когда движок регулярных выражений (программный модуль, реализующий поиск по регулярным выражениям) видит \b, он проверяет, что позиция в строке является границей слова.
Есть три вида позиций, которые являются границами слова:
- Начало текста, если его первый символ
\w. - Позиция внутри текста, если слева находится
\w, а справа – не\w, или наоборот. - Конец текста, если его последний символ
\w.
Например, регулярное выражение \bJava\b будет найдено в строке Hello, Java!, где Java – отдельное слово, но не будет найдено в строке Hello, JavaScript!.
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
В строке Hello, Java! следующие позиции соответствуют \b:
Так что она соответствует регулярному выражению \bHello\b, потому что:
- В начале строки совпадает первая проверка
\b. - Далее слово
Helloсовпадает. - Далее проверка
\b– снова совпадает, так как мы находимся междуoи запятой.
Шаблон \bJava\b также совпадёт. Но не \bHell\b (потому что после l нет границы слова), и не Java!\b (восклицательный знак не является «символом слова» \w, поэтому после него нет границы слова).
alert( "Hello, Java!".match(/\bHello\b/) ); // Hello
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, Java!".match(/\bHell\b/) ); // null (нет совпадения)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (нет совпадения)
Мы можем использовать \b не только со словами, но и с цифрами.
Например, регулярное выражение \b\d\d\b ищет отдельно стоящие двузначные числа. Другими словами, оно требует, чтобы и до и после \d\d были символы, отличные от \w, такие как пробелы или пунктуация (или начало/конец текста).
alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78
alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56
\b не работает для алфавитов, не основанных на латиницеПроверка \b смотрит на обе стороны границы: должно быть \w с одной стороны и «не \w» – с другой.
Но \w означает латинскую букву (или цифру или знак подчёркивания), поэтому проверка не будет работать для других символов, например, кириллицы или иероглифов).
Комментарии
<code>, для нескольких строк кода — тег<pre>, если больше 10 строк — ссылку на песочницу (plnkr, JSBin, codepen…)