Чтобы построить регулярное выражение из переменной в JavaScript, вам нужно использовать конструктор RegExp
со строковым параметром.
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags = 'g';
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}
Конечно, этоочень наивный пример.Предполагается, что input
было правильно экранировано для регулярного выражения.Если вы имеете дело с пользовательским вводом или просто хотите сделать более удобным сопоставление специальных символов, вам нужно экранировать специальные символы :
function regexEscape(str) {
return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
}
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags = 'g';
input = regexEscape(input);
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}