Recientemente tuvimos un error, después de que un desarrollador compañero cambió un literal de RegExp en una llamada de constructor, y me preguntaba por qué hay alguna diferencia. el código exacto eraDiferencias entre Javascript regexp literal y constructor
var parts = new RegExp("/rt:([^@]+)@(\d+)/").exec(tag);
vs el original de
var parts = /rt:([^@]+)@(\d+)/.exec(tag);
Cuando tag
decir, por ejemplo rt:[email protected]
, la primera (con errores) llamada devuelve null
, mientras que el segundo uno vuelve ["rt:[email protected]", "60C1C036-42FA-4073-B10B-1969BD2358FB", "00000000077"]
Huelga decir que revertí el cambio, pero me gustaría saber por qué hay tanta diferencia en primer lugar.
¡Buena respuesta, creo que eliminaré la mía! ¿Qué sucede si necesita reutilizar un RegExp en particular? ¿No es un buen momento para usar un constructor? ¿O simplemente diría 'var resuasableRegex =/.. pattern ../;'? –
@ElRonnoco: Exactamente, también puede asignar un literal de expresión regular a una variable. –
Gracias por la información. La próxima vez investigaré mejor las cuerdas para asegurarme de que no haya caracteres de escape necesarios. De todos modos, literal es mucho más fácil. –