Innanzitutto: le RegExp sono
Case Sensitive: "a" è diverso da "A".
Poi: un'Espressione Regolare va sempre racchiusa fra due slash:
/RegExp/, pensate a questi come alle virgolette con cui racchiudiamo le stringhe.
Una RegExp serve di fatto per fare operazioni o controlli sulle stringhe: ma attenzione qui il termine di "stringa" è inteso in senso molto più ampio di "una semplice sequenza di caratteri".
Normalmente siamo portati a pensare ad una stringa come ad una sequenza di lettere, numeri, spazi ecc, ma per le RegExp una stringa è una qualsiasi sequenza di codici ASCII, quindi non solo lettere e numeri, ma anche segni di punteggiatura, caratteri speciali e di controllo (Carriage Return, Line Feed, Tab, BackSpace, accentate straniere, etc.).
La rappresentazione delle sottostringhe può avvenire in vari modi. Una sequenza particolare di caratteri (quella che definiamo comunemente sottostringa: "riccardo"), qui si può rappresentare semplicemente inserendola fra gli slash:
/riccardo/ ed è l'uso più comune ed immediato che se ne fa tipicamente quando si usa
replace(): Provate a salvare ed eseguire questo script:
<HTML>
<BODY BGCOLOR="#ffffff">
<SCRIPT>
<!--
var stringa="HTML e' un linguaggio di programmazione.";
alert(stringa);
re=/programmazione/;
stringa=stringa.replace(re,"markup");
alert(stringa);
//-->
</SCRIPT>
</BODY>
</HTML>
|
Alla variabile "re" abbiamo associato la RegExp (stringa) "programmazione", con
replace(RegExp,"StringaDaSostituire") sostituiamo alla RegExp la stringa da sostituire cioè "markup"... ottenendo un'affermazione diversa (e vera tra l'altro :-).
Questa RegExp cerca, se c'è, la prima occorrenza del testo voluto, ma altre occorrenze vengono ignorate.
Nel mondo delle RegExp per imporre la ricerca all'interno di tutta la stringa si usa
"g" (che sta per "global") dopo lo slash di chiusura:
re=/programmazione/g;, se vogliamo che la ricerca sia Case Insensitive, aggiungeremo
"i":
re=/programmazione/gi;, oppure useremo solamente
"i" se ci basta che la ricerca dell'eventuale prima occorrenza sia Case Insensitive, ma non ci interessa trovare altre occorrenze:
re=/programmazione/i;.