Задать вопрос
AndrewHaze
@AndrewHaze
Умею гуглить яндексом

Как сделать фильтрацию с помощью регулярных выражений?

Использую компонент b-table из Bootstrap + Vue, пытаюсь сделать фильтрацию с помощью регулярного выражения.

Так работает (фильтруются все строки на "А"): this.filter =/(?:^|\s)([A][.]*)/gi;.

А вот так уже нет:

var expr = new RegExp('(?:^|\s)([' + arg + '][.]*)','gi');
 this.filter = expr;

И так тоже не работает:

var expr = new RegExp('(?:^|\s)([А][.]*)','gi');
this.filter = expr;

В консоли ошибок нет.
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Регулярные выражения
RegExp('(?:^|\s)([' + arg + '][.]*)','gi');

Косяк - при использовании конструктора RegExp надо экранировать обратный слеш.
Непонятное - зачем флаг g, выделение первых букв в отдельную группу и точки, которых может вообще не быть? Вы же вроде фильтрацию делаете.

Исправляем: RegExp(`(?:^|\\s)[${arg}]`, 'i').

this.filter = expr;

Раз у вас там таблица, то, надо полагать, свойство filter передаётся этой таблице в качестве значения одноимённого параметра. Почему обычное свойство? Может, стоит сделать его вычисляемым?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы