La "letra" g es un flag de la regexp, indica que se reemplace cualquier fragmento de string que matchee con ella. Si no la pusieras, sólo reemplazaría una vez.
join sirve para unir elementos de un array con un string:
Código Javascript
:
Ver original['^', '|', '$'].join('a'); // "^a|a$"
Lo puse así porque se veía más bonito, pero podría haber puesto:
Código Javascript
:
Ver original'^' + trim + '|' + trim + '$'
Por último, RegExp es el constructor de la regexp. Es lo mismo que usar la notación literal (con slashes), pero con un string.
Código Javascript
:
Ver originalr = /^abc$/g;
r = new RegExp('^abc$', 'g');
Las dos expresiones anteriores vendrían a ser iguales, salvo algunos detalles.
Y sí, esta regexp con el replace sirve para lo que tú quieres hacer, y es más eficaz que substring.
Saludos (: