Ho posto una domanda qui su js, regex, quantificatori e ricerca globale. Ho finalmente capito come funziona, ma, facciamo un esempio concreto e poi scriverò la mia domanda.
Basato sullo stesso esempio
var str = 'ddd';
var r = /d*/g;
console.log(str.match(r))
emette questo array: ["ddd", ""]
Capisco che il primo elemento nell'array sia perché corrisponde alla lettera d
e l'ultimo elemento (quella stringa vuota) è perché corrisponde alla fine della stringa, che non è nulla, quindi * ha senso perché corrisponde a 0 o più occorrenze ...
Quindi, le mie domande sono:
- Perché questo sta accadendo?
- Perché basta interrogare la fine della stringa per ottenere finalmente a true matching?
Secondo me, la fine della stringa (ddd) non dovrebbe essere interrogata; perché non è come se la mia stringa contenesse uno spazio vuoto alla fine 'ddd'. Se la mia stringa era vuota, era logico corrispondere, ma non in questo caso. La mia logica qui è questa:
per ogni carattere nella stringa, fai questa ricerca / regex (d *) ... quindi perché continua semplicemente con la fine della stringa? Dovrebbe fermarsi sull'ultimo charachter della mia stringa, che in questo caso è d
...