У меня очень простое регулярное выражение, которое я использую для выделения поисковых запросов в моем приложении. Если пользователь вводит в «стек» в поисковой форме, например, следующее регулярное выражение используется в качестве аргумента строки для preg_match_all
, чтобы выделить результаты:Как преобразовать регулярное выражение PHP в JS-regex на лету?
"/\b((stack|stacks))\b/i"
Я использую json_encode
для вывода некоторых из моей конфигурации варианты для моего приложения, включая регулярное выражение выше. Мне нужно это регулярное выражение на стороне клиента, потому что я lazy-load pagination items с бесконечным прокруткой, и я хочу использовать клиентскую сторону для анализа HTML для правильного выделения поискового запроса.
объект конфигурации My JS теперь появляется подобное:
config = {
searchRegex: "/\b((stack|stacks))\b/i",
// ... more options
}
Если searchRegex
не строка, я бы не проблема. Он автоматически будет объектом регулярного выражения, и в этом регулярном выражении нет ничего, что JavaScript не поддерживает. Но теперь я должен прибегнуть к разбору строки, чтобы получить соответствующие аргументы для конструктора RegExp
, который включает в себя удаление разделителей и получение модификаторов. Со всеми экранированными символами, которые могут присутствовать, это не похоже на жизнеспособный или разумный вариант.
Как бы преобразовать searchRegex
, чтобы стать объектом регулярного выражения?
См http://stackoverflow.com/questions/874709/converting-user-input-string-to-regular-expression. Это не дает другого решения, кроме использования конструктора RegExp, но я думаю, что нет. –
Почему бы не упростить ваш reg-ex с помощью '/ \ b (stacks?) \ B/i', который затем будет мутирован в'/\\ b (stacks?) \\ b/i'? – Stphane