In JavaScript, gli oggetti RegEx possono essere istanziati con flag come g
per la corrispondenza globale e i
per senza distinzione tra maiuscole e minuscole.
Intuitivamente, ha senso che i
sia una proprietà del RegEx costruito, perché il motore RegEx sta facendo uno scanner dove 'A' e 'a' contano come lo stesso token.
Non riesco a trovare un argomento simile per il g
flag, comunque. Ad esempio, il seguente codice sostituisce i caratteri "p" con i caratteri "d" (stampando "addle"):
"apple".replace(/p/g, "d");
Poiché RegEx corrisponde solo a una singola "p", deve corrispondere più volte per sostituire tutte le "p". Probabilmente, il RegEx non dovrebbe "sapere" che sarà usato in questo modo e il codice sarebbe più semantico se fosse permesso di essere scritto come questo, invece:
"apple".replace(/p/, "d", true);
Qual è il vantaggio del modo in cui JavaScript fa le cose? È lo stile / leggibilità, o forse c'è qualche ottimizzazione che questo consente?