RegExp como string
Existen dos formas de obtener la representación en forma de cadena de una expresión regular
- Propiedad source: Obtiene la cadena del patrón sin las barras ni flags
- Método toString(): Cadena string del patrón completo
La propiedad source solo devuelve la parte del patrón descriptiva de la búsqueda, es decir, la parte que se encerraría entre las barras inclinadas y eliminando la barra de escape. No da información sobre las flags o modificadores, para estos tendríamos que usar el método flags()
El método toString() sobreescribe al heredado de Object y devuelve la cadena completa del patrón, incluídas las barras y las flags.
Veamos en un ejemplo las distintas posibilidades que podemos encontrarnos
var expreg1 = /\d+A/ig;
var expreg2 = new RegExp("\\d+A", "ig");
console.log("Source "+ expreg1.source); // "\d+A"
console.log("toString "+ expreg1.toString() ); // "/\d+A/ig"
console.log("Source "+ expreg2.source); // "\d+A"
console.log("toString "+ expreg2.toString() ); // "/\d+A/ig"
En el ejemplo ambas expresiones regulares son iguales, solo cambia la forma de crearlas. Como ves la propiedad source no inluye los flags y elimina las barra usadas para escapar caracteres ( \ ).
Por su parte el método toString() si devuelve toda la exprsión regular completa en una cadena, aunque también elimina la barra de escape ( \ ).