Регулярное выражение Javascript, что в хранимой переменной, не работает должным образомJavascript

Форум по Javascript
Ответить
Anonymous
 Регулярное выражение Javascript, что в хранимой переменной, не работает должным образом

Сообщение Anonymous »

Регулярные выражения, хранящиеся в переменных

Код: Выделить всё

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);
Я этого и ожидаю.

Код: Выделить всё

Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ]
Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ]
Но на самом деле работало вот так.

Код: Выделить всё

Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ]
null
Регулярные выражения, не хранящиеся в переменных

Код: Выделить всё

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);
Вывод

Код: Выделить всё

Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ]
Array(5) [ "poster_1.jpg", "poster", "_1", "1", "jpg" ]
Все работало так, как я ожидал.
Я хотел бы знать, почему возникают эти различия.
Проверенная среда выполнения
  • 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


Подробнее здесь: https://stackoverflow.com/questions/798 ... as-expecte
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»