Skip to content

Latest commit

 

History

History
52 lines (35 loc) · 3.81 KB

File metadata and controls

52 lines (35 loc) · 3.81 KB

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

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

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

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

  • На початку рядка, якщо його перший символ є буквеним символом pattern:\w.
  • Між двома символами в рядку, де один є буквеним символом pattern:\w, а інший -- ні.
  • В кінці рядка, якщо його останній символ представляє собою буквений символ pattern:\w.

Наприклад, регулярний вираз pattern:\bJava\b знайде збіги в subject:Hello, Java!, де subject:Java -- окреме слово, але не в subject:Hello, JavaScript!.

alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null

У рядку subject:Hello, Java! наступні позиції будуть відповідати межам слова pattern:\b:

Виходить, що рядок відповідає шаблону pattern:\bHello\b за наступними критеріями:

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

Отже, шаблон pattern:\bHello\b буде збігатися, при цьому, pattern:\bHell\b -- ні (оскільки немає закінчення слова після символу l), а також не буде збігатися pattern:Java!\b (оскільки знак оклику не буквений символ pattern:\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)

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

Наприклад, шаблон pattern:\b\d\d\b шукає окремі двозначні числа. Іншими словами, він шукає двозначні числа, які оточені символами, відмінними від буквенних pattern:\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

```warn header="Межа слова pattern:\b не працює з алфавітами, відмінними від латинського" Перевірка межі слова `pattern:\b` звіряє чи є `pattern:\w` з однієї сторони і "не `pattern:\w`" -- з іншої.

Але pattern:\w позначає латинську літеру a-z (або цифру чи нижнє підкреслення), тому перевірка не працює для інших символів, наприклад, кирилиці чи ієрогліфів.