Фильтр по начальным символам
Нужен фильтр по начальным символам слов. Т.е. есть массив предложений:
Добавляем 'ва' и получаем только 1 (Вася) Стандартный фильтр при вводе 'в' найдет все, так как он просто ищет наличие последовательности. p.s.В обще-то можно и просто функцию без привязки к angular. А то вроде просто, но все-таки функция замороченная получается. |
Вроде придумал. Создаю два RegExp и проверяю для них все фразы.
var re0 = new RegExp("[\\s|,|.]"+n, "gi"); var re1 = new RegExp("^"+n, "gi");n - искомая последовательность символов |
Цитата:
|
var re0 = new RegExp("[\\s|,|.]"+n, "i"); var re1 = new RegExp("^"+n, "i");Убрал 'g' из параметров. Вроде работает. Хотел в один RegExp объединить, но знаний не хватает. |
Цитата:
var re = new RegExp("^|[\\s|,|.]"+n, "i");-- upd. C утречка глянул ещё разок. Поправка: var re = new RegExp("(^|[\\s|,|.])"+n, "i");-- upd 2 Мне сейчас регулярки как раз актуальны (делаю формы для редактирования с валидацией), а посему глянул доки. Всё может оказаться попроще. Цитата из мануала: Код:
\b : Позиция между символом ASCII и не символом ASCII (граница слова) 1) var re = new RegExp("\b"+n, "i");2) var re = new RegExp("(^|\b)"+n, "i"); Первый вариант будет/не будет работать в зависимости от того, считается ли начало строки границей слова, второй вроде по любому должон работать |
MetaDriver,
Честно говоря не очень понимаю что значит символ ASCII в данном случае. По идее a-z тоже символ ASCII. |
Цитата:
У меня PhpStorm говорит что будут работать оба последних варианта (в Web/PhpStorm есть тестер RegExp'ов). |
|
Цитата:
Видимо плагин для PhpStorm (как выяснилось, это сторонний плагин RegexpTester ), местами не совсем корректен. // А вообще плагин классный, рекомендую, я сегодня на нём быстро отладил десяток регулярок для своей автоформы. |
MetaDriver,
Я на https://regex101.com/ тестирую RegExp-ы обычно. p.s.исправил \b на \\b Нашел проблему: если в искомой строке присутствуют управляющие символы RegExp (к примеру '('), то динамическое создание RegExp происходит с ошибкой. Так что перешел на вариант предложенный тут. |
Часовой пояс GMT +3, время: 19:44. |