let m1 = /^(bg|portrait|poster)(|\_(\d+))\.(webp|webm|jpg|jpeg|png|bmp|mp4)$/gi.exec("poster_1.jpg");
console.log(m1);
let m2 = /^(bg|portrait|poster)(|\_(\d+))\.(webp|webm|jpg|jpeg|png|bmp|mp4)$/gi.exec("poster_1.jpg")
console.log(m2);
[b]Регулярные выражения, хранящиеся в переменных[/b] [code]const pattern = /^(bg|portrait|poster)(|\_(\d+))\.(webp|webm|jpg|jpeg|png|bmp|mp4)$/gi; let m1 = pattern.exec("poster_1.jpg"); console.log(m1);
let m2 = pattern.exec("poster_1.jpg") console.log(m2); [/code] Я этого и ожидаю. [code]Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ] Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ] [/code] Но на самом деле работало вот так. [code]Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ] null [/code] [b]Регулярные выражения, не хранящиеся в переменных[/b] [code]let m1 = /^(bg|portrait|poster)(|\_(\d+))\.(webp|webm|jpg|jpeg|png|bmp|mp4)$/gi.exec("poster_1.jpg"); console.log(m1);
let m2 = /^(bg|portrait|poster)(|\_(\d+))\.(webp|webm|jpg|jpeg|png|bmp|mp4)$/gi.exec("poster_1.jpg") console.log(m2); [/code] Вывод [code]Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ] Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ] [/code] Все работало так, как я ожидал. Я хотел бы знать, почему возникают эти различия. Проверенная среда выполнения [list] [*]Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0 [*]Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [*]Nodejs v22.14.0 [/list]