Как вставить переменную в регулярное выражение?

Пишу код который должен искать файлы с разными расширениями, выглядит так:

<div class="main-box">
<div class="text-wrap">
    <label for="input-text">Paste the text below</label>
    <textarea name="input-text" id="input-text" cols="30" rows="10"></textarea>
    <label for="format">File format (optional)</label>
    <input type="text" id="format" placeholder=".png">
    <button id="submit-btn">Find</button>
</div>
<div class="text-wrap">
    <label for="output-text">Finded:</label>
    <textarea name="output-text" id="output-text" cols="30" rows="10" disabled></textarea>
</div>
<script>
format = $('#format').val()
test = '\S*\' + format
var regex = new RegExp(test, 'g')
$('#submit-btn').click(function(){
    let str = $('#input-text').val();         //получение текста
    str = str.match(regex);                  //обработка
    $("#output-text").val(str.join("\n"));  //вывод
});
</script>

Проблема в обратном слэше, не получается его экранировать так, чтобы всё работало


Ответы (1 шт):

Автор решения: Aziz Umarov

Вам ничего не мешает сделать рег выражение из строки, которую вы можете сконструировать как вам угодно

const regex = new RegExp(str);

Проблема экранирования посмотрите тут

Пример эквивалентов оттуда

 var re = /\w+/;
 var re = new RegExp('\\w+');

Или

  /ab+c/i;
  new RegExp('ab+c', 'i');

В вашем конкретном примере используйте две \\ в строке если в результате хотите один \ в выражении.

format = $('#format').val()
test = '\\S*\\' + format
var regex = new RegExp(test, 'g')
→ Ссылка