Как вставить переменную в регулярное выражение?
Пишу код который должен искать файлы с разными расширениями, выглядит так:
<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')