Так, например:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Но это, конечно, не работает :) Есть ли способ сделать это?
javascript
regex
variables
Адам
источник
источник
Ответы:
Обновить
За некоторыми из комментариев, важно отметить , что вы можете избежать в переменном , если есть потенциал для вредоносного содержимого (например , переменные приходит от пользовательского ввода)
ES6 Обновление
В 2019 году это обычно пишется с использованием строки шаблона, и приведенный выше код был обновлен. Первоначальный ответ был:
источник
regex
выражение/\w+\//i
становитсяnew RegExp("\\w+/", "i")
Вы можете использовать объект RegExp:
Тогда вы можете строить
regexstring
так, как хотите.Вы можете прочитать больше об этом здесь .
источник
Чтобы построить регулярное выражение из переменной в JavaScript, вам нужно использовать
RegExp
конструктор со строковым параметром.конечно, это очень наивный пример. Предполагается, что
input
он был правильно экранирован для регулярного выражения. Если вы имеете дело с пользовательским вводом или просто хотите сделать более удобным сопоставление специальных символов, вам нужно экранировать специальные символы :источник
ReGeX
текст. Поэтому я использовал:return new RegExp(input, flags);
\\
представляет один\
символ,$&
является соответствующей подстрокой .если вы используете литералы шаблона es6 вариант ...
источник
^[^\s]{${4},${32}}$
); экспорт const validatePassword = значение => значение.match (newRegExp); `` `Вы всегда можете дать регулярное выражение в виде строки, то есть
"ReGeX" + testVar + "ReGeX"
. Возможно, вам придется экранировать некоторые символы внутри вашей строки (например, двойные кавычки), но в большинстве случаев это эквивалентно.Вы также можете использовать
RegExp
конструктор для передачи флагов ( см. Документацию ).источник
Вы можете создавать регулярные выражения в JS одним из двух способов:
/ab{2}/g
new RegExp("ab{2}", "g")
.Литералы регулярных выражений являются константами и не могут использоваться с переменными. Это может быть достигнуто с помощью конструктора. Структура конструктора RegEx
Вы можете встраивать переменные как часть normalExpressionString. Например,
Это будет соответствовать любому внешнему виду шаблона
cdcdcd
.источник
Вот довольно бесполезная функция, которая возвращает значения, заключенные в определенные символы. :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
источник
принятый ответ не работает для меня и не следует примерам MDN
см. раздел «Описание» в ссылке выше
Я бы сказал, что это работает для меня:
источник
Необходимо только подготовить строковую переменную, а затем преобразовать ее в RegEx.
например:
Вы хотите добавить
minLength
иMaxLength
с переменной для RegEx:Теперь, если вы измените значение
MaxLength
илиMinLength
, оно изменится во всех регулярных выражениях.Надеюсь быть полезным. Также извините за мой английский.
источник