У меня есть вход, где я могу добавить регулярное выражение в виде строки. Например: ^ abc / igm
Мое требование:
- Мне нужно подтвердить ввод и проверить, является ли оно действительным регулярным выражением или нет.
- Мне нужно преобразовать действительное регулярное выражение в приемлемый формат mongodb, т.е.
{$regex: 'abc', $options: 'igm'}
Для 2-го пункта я использовал:
let options = val.replace(/.*\/([gimy]*)$/, '$1');
для $ options и
let pattern = val.match(/.*\//);
для $ regex.
Но есть несколько проблем, с которыми я сталкиваюсь:
шаблонвозвращая значение как ^ abc / , и этот завершающий символ "/" недопустим в фильтре mongodb.
Я могу проверить последнее вхождение "/" и удалитьэто в шаблоне, но что, если пользователь добавляет несколько «/» в шаблон, как ^ abc / cde ////// gm . Он по-прежнему недействителен для mongodb.
Теперь, если я удалю все завершающие символы "/", все равно это недопустимое регулярное выражение ^ abc / cde .
Теперь я снова могу проверить наличие всех "/" и удалить его, но что если пользователь напишет регулярное выражение, например ^ abc / cde / gm . Это правильное регулярное выражение, и по логике удаления «/» оно удалит «/», что станет другой проблемой.
Это становится слишком сложным. Будем весьма благодарны за любую помощь в проверке регулярного выражения и написании его в приемлемом формате mongodb.