Hai ragione ma non era quello, ho sbagliato a scrivere qui, nel codice che usavo era scritto giusto.

Non so se può aiutare ma mi sono accorto che su Safari vengono sostituite correttamente le stringhe che contengono il > ma non quelle che contengono <, mentre su FF né le une né le altre.

Inoltre succede che, solo per le stringhe:

/\s:-?&/g associata all'immagine 1

/\s:-?</g associata all'immagine 2

/\s:-?>/g associata all'immagine 3

viene sostituita un'immagine, ma sempre la 1, seguita dalle scritte, rispettivamente, «amp;» «lt;» «gt;».

Già che ci sono, è possibile far riconoscere due stringhe diverse che iniziano allo stesso modo?
Cioè se voglio sostituire a /\s:-?\)/g un'immagine e a /\s:-?\)\)/g un'altra immagine, come faccio? Adesso come adesso mi viene sempre fuori la stessa immagine del primo caso, però seguita da ) nel secondo caso.
L'unico modo che mi è venuto in mente è usare

/\s:-?\)\s/g

/\s:-?\)\)\s/g

ma non funziona se la stringa si trova a fine frase senza altri spazi dopo.