Согласно MDN , следующие выражения создают одно и то же регулярное выражение:
new RegExp("ab+c", "i");
new RegExp(/ab+c/, "i");
Ожидаемый результат:
/ab+c/i
Результат также будет таким жеесли вы передаете литерал регулярного выражения с флагом, но не определяете новые флаги во втором аргументе, например:
new RegExp(/ab+c/i)
Должен возвращать тот же литерал регулярного выражения (/ab+c/i
), но если вы укажетеновые флаги регулярных выражений (во втором аргументе) будут удалены все существующие флаги.
new RegExp(/ab+c/i, "")
new RegExp(/ab+c/i, "g")
new RegExp(/ab+c/i, "m")
Ожидаемый результат:
/ab+c/
/ab+c/g
/ab+c/m
Что делает буквенная запись?
Буквенная запись обеспечивает компиляцию регулярного выражения при вычислении выражения.
Когда следует использовать буквенную запись?
Использовать буквенную запись, когдарегулярное выражение останется постоянным.Например, если вы используете литеральную запись для создания регулярного выражения, используемого в цикле, регулярное выражение не будет перекомпилироваться на каждой итерации.
Что делает функция конструктора?
Конструктор объекта регулярного выражения (например, new RegExp('ab+c')
) обеспечивает компиляцию регулярного выражения во время выполнения.
Когда мне следует использовать функцию конструктора?
Используйте функцию конструктора, когда вы знаете, что шаблон регулярного выражения будет меняться, или вы не знаете шаблон и получаете его из другого источника, такого как пользовательский ввод.
Удачи.