11 грудня 2022 р.

Межа слова: \b

Межа слова \b – це така ж сама перевірка як і ^ та $.

Коли механізм регулярних виразів (програмний модуль, який здійснює пошук регулярних виразів) стикається з \b, він перевіряє, чи є позиція в рядку межею слова.

Є три різні позиції, які кваліфікуються як межі слова:

  • На початку рядка, якщо його перший символ представляє собою буквенний символ \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 за наступними критеріями:

  1. На початку рядка відповідає першій перевірці \b.
  2. Потім відповідає цілому слову Hello.
  3. І, врешті-решт, перевірка \b також збігається, оскільки ми знаходимось між символом o і комою.

Отже, шаблон \bHello\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 (no match)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (no match)

Ми можемо використовувати \b не тільки зі словами, а й з цифрами.

Наприклад, шаблон \b\d\d\b шукає окремі двозначні числа. Іншими словами, він шукає двозначні числа, які оточені символами, відмінними від буквенних \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 позначає латинську літеру a-z (або цифру чи нижнє підкреслення), тому перевірка не працює для інших символів, наприклад, кирилиці чи ієрогліфів.

Завдання

Час відповідає формату: години:хвилини. І години, і хвилини мають по дві цифри, наприклад, 09:00.

Створіть регулярний вираз для пошуку часу у рядку : Сніданок о 09:00 в кімнаті 123:456.

P.S. У цьому випадку немає потреби перевіряти правильність часу, тому 25:99 також може бути правильним результатом пошуку.

P.P.S. Регулярний вираз не повинен знаходити 123:456.

Відповідь: \b\d\d:\d\d\b.

alert( "Сніданок о 09:00 в кімнаті 123:456.".match( /\b\d\d:\d\d\b/ ) ); // 09:00
Навчальна карта

Коментарі

прочитайте це, перш ніж коментувати…
  • Якщо у вас є пропозиції, щодо покращення підручника, будь ласка, створіть обговорення на GitHub або одразу створіть запит на злиття зі змінами.
  • Якщо ви не можете зрозуміти щось у статті, спробуйте покращити її, будь ласка.
  • Щоб вставити код, використовуйте тег <code>, для кількох рядків – обгорніть їх тегом <pre>, для понад 10 рядків – використовуйте пісочницю (plnkr, jsbin, codepen…)