Недавно у нас появилась ошибка, когда другой разработчик изменил литерал RegExp на вызов конструктора, и мне было интересно, почему вообще существует какая-либо разница. Точный код был
var parts = new RegExp("/rt:([^@]+)@(\d+)/").exec(tag);
по сравнению с оригиналом
var parts = /rt:([^@]+)@(\d+)/.exec(tag);
Когда tag
, например rt:[email protected]
, первый (багги) вызов возвращает null
, а второй возвращает ["rt:[email protected]", "60C1C036-42FA-4073-B10B-1969BD2358FB", "00000000077"]
Излишне говорить, что я вернул изменения, но я хотел бы знать, почему в этом есть такая разница.