Différences entre le JavaScript regexp littéral et le constructeur
nous avons eu récemment un bug, Après qu'un autre développeur a changé un RegExp littéral en un appel constructeur, et je me demandais pourquoi il y avait une différence. Le code exact était
var parts = new RegExp("/rt:([^@]+)@(d+)/").exec(tag);
vs l'original de
var parts = /rt:([^@]+)@(d+)/.exec(tag);
Quand tag
, par exemple rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077
, le premier (buggy) appel renvoie null
, tandis que la seconde renvoie["rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077", "60C1C036-42FA-4073-B10B-1969BD2358FB", "00000000077"]
Inutile de dire que j'ai repris les changer, mais j'aimerais savoir pourquoi il y a une différence dans la première lieu.
17
demandé sur
Noam Gal
2011-11-01 14:05:46