Найти слово начинающееся на м и состоящее больше чем из 3х букв
Здравствуйте. Делаю поиск по сайту с подсказкой слов. Бьюсь уже не первый день над регулярным выражением. Никак не выходит составить его правильно.
Есть, к примеру, строка: "мой монитор умолк". Нужно найти слово "монитор". Использую регулярное выражение: Код:
/\bм\w*\b/ui Корректирую регулярку: Код:
/\bм\w{3,}\b/ui Код:
/\bмонито\w{3,}\b/ui Колдовство со скобками не давало нужного результата, или я чего-то недопонимаю. По сути, {3,} должно быть всего букв в слове, то есть маска должна быть какой-то примерно такой: Код:
/\b(монито\w*){3,}\b/ui |
Цитата:
|
Ilya_Ru,
<script> document.write("мой монитор умолк".match(/(?:^|\s+)(м[а-яё]{3,})/ui)[1]) </script> |
Если проблема была в использовании \b, то слово "монитор" нашлось бы с использованием даже такой регулярки: /монито\w{3,}/ui или /(монито\w*){3,}/ui , или даже без использования \w: /монито[а-я]{3,}/ui но не работает... Здесь проблема в чем-то другом... В чем - я не пойму...
В таком случае слово "монитор", увы, уже идет мимо кассы: <script> document.write("мой монитор умолк".match(/(?:^|\s+)(монито[а-яё]{3,})/ui)[1]) </script> |
Ilya_Ru,
так если длина шаблона больше 3 что мешает использовать * вместо {3,} |
Ilya_Ru,
<script> let str = 'м', num = Math.max(0, 4 - str.length), reg = new RegExp(`(?:^|\\s+)(${str}[а-яё]{${num},})`, 'ui'); document.write("мой монитор умолк".match(reg)[1]) </script> |
Достаточно интересный подход. Спасибо. А я мучал только регулярку. Хотя, я думаю, одной только регуляркой, без вспомогательных проверок, вопрос все равно бы не решился.
|
Malleys,
:blink: |
Часовой пояс GMT +3, время: 00:22. |