Newsgroup: it.comp.lang.javascript
Titolo: Leggere l'array creato da match

Ciao a tutti come al solito msdn fa le pentole ma non i coperchi recita a
proposito di match:
The array returned by the match method has three properties, input, index
and lastIndex.
poi fa un esempio di come creare l'array.
Quando però io provo a leggere le proprietà il mio codice mi restituisce
"undefined".
array[indice] restituisce la proprietà input ma per leggere le altre due
come si fa?
Ho cercato ni post precedenti ed ho sperimentato le seguenti istruzioni
senza alcun risultato utile
r[i].index , r.index[i].
<script>
abc = "straingLiteral"
ma = /ra|ing/ig
r = abc.match(ma);
document.write("input = index = lastIndex<br>");
//document.write(r.length);
for (i=0 ; i < r.length ; i++){
document.write(r[i] + " = "+ r[i].index + " = "+ r[i].lastIndex + "<br>");
}
</script>
Grazie per l'aiuto
--
"Non ti fare mai beffe di un drago vivo, pazzo di un Bilbo!"
m.vignocchiCHIOCCIOLAtiscalinetPUNTOit
Medusa

Cosa hai bisogno di sapere?
LastIndex č una  proprietą del regexp (che, come da documentazione
microsoft, viene modificato dopo il match), non dell'array restituito (se
dopo aver fatto il match fai un alert(ma.lastIndex) dovrebbe restituirti
l'ultima occorrenza trovata)

 l'ultima occorrenza trovata)
ho provato e lo fa, ma non è ciò che avevo dedotto che si potesse fare con
match.
Grazie comunque della disponibilità.


 following the last character in the last match?
alert(r.input) <= restituisce la stringa di origine (entire searched string
sě, me pare 'na strunzata)
nel tuo esempio rs.index => 11, ma.lastIndex => 13...
Comunque si puň quantomeno dire (ad esser buoni) che msdn č un po'
"oscuro"...
vedi un po' qua:
http://www.webreference.com/js/column5/backreferences.html

 "oscuro"...
Si, certamente è spiegato male... ma forse non si poteva fare diversamente,
visto che l'array ha effettivamente queste proprietà ma di queste proprietà
solo input, che restituisce la stringa su cui è stata effettuata la ricerca,
è relativa a tutto l'array mentre index e lastIndex sono relative all'ultimo
elemento dell'array ovvero l'ultima occorrenza trovata; che senso abbia lo
dovrebbero spiegare in una nota in calce.
Tramonta così miseramente la mia speranza di avere un'istruzione
intelligente,efficace e potente.
Sarebbe stato bello avere un array di record che contenesse di ogni
occorrenza la stringa trovata, dove è stata trovata e dove finisce.
Sarà per un'altra vita.
Ciao e grazie per l'aiuto.


 Ciao e grazie per l'aiuto.
Non disperare che con le RegExp si puo' fare l'impossibile.
Posto esempio:
function test(str,strSearch){
 var arr,s="",re=new RegExp();
 re.compile(strSearch,"gi");
 while((arr=re.exec(str))!=null)
       s+=arr.index+"-"+arr.lastIndex+"\t"+arr+"\n";
 return s;
}
var a="Una banale stringa per analizzare."
var b="na";
alert(test(a,b));

=5.5...(quindi mai usato per compatibilità)
Ho verificato dopo il tuo post, in realtà esiste dalla versione 3 (come
peraltro indicato nella riga sotto della stessa pagina di documentazione).
Sempre più W mamma Microsoft...

 Sempre più W mamma Microsoft...
Credo che per questioni di compatibilita' mentale ci siano nelle reference
tanti bug quanti nei programmi...