JavaScript/Espressioni regolari: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
proseguo
Ramac (discussione | contributi)
proseguo
Riga 62:
//in quanto se c'è anche un solo carattere non di parola l'username non è valido
 
var validonon_valido = !(myRegex.test(username));
 
if (validonon_valido == true) {
alert('Nome utente non valido. Riprova');
} else {
Riga 90:
|}
 
Supponiamo ad esempio di aver chiesto all'utente di inserire un [[w:Codice di avviamento postale|CAP]] e di voler verificare che sia valido:
<source lang=javascript>
var cap = document.form.username.value; //prende il nome dal form
var myRegex = /\d{5}/; //5 cifre
 
if (myRegex.test(cap)) {
//il cap è valido...
} else {
alert('Inserire un CAP valido');
}
</source>
 
=== Posizione ===
Analizziamo ora alcuni caratteri di posizione, che non specificano un particolare tipo di caratteri, bensì una particolare posizione nella stringa.
{| {{prettytable}}
! Carattere !! Abbina !! Esempio
|-
| <tt>^</tt> || Abbina l'inizio della stringa o, nel caso di stringhe su righe multiple, l'inizio di una riga.<ref name=multiline>Per lavorare con stringhe su più righe si deve impostare la proprietà <code>multiline</code> dell'oggetto RegExp su <code>true</code> (<code>myRegex.multiline = true;</code>).</ref> || <tt>^\d</tt> abbina <tt>2</tt>, ma solo se ad inizio riga
|-
| <tt>$</tt> || Abbina la fine della stringa o, nel caso di stringhe su righe multiple, la fine di una riga.<ref name=multiline>Per lavorare con stringhe su più righe si deve impostare la proprietà <code>multiline</code> dell'oggetto RegExp su <code>true</code> (<code>myRegex.multiline = true;</code>).</ref> || <tt>\w$</tt> abbina <tt>a</tt>, ma solo se a fine riga
|-
| <tt>\b</tt> || Abbina un limite di parola, cioè il punto tra la fine di una parola e il primo carattere di parola || <tt>a\b</tt> abbina <tt>a</tt>, ma solo se si trova alla fine di una parola. Questo può servire se si vuole abbinare solo una parola: <code>\bparola\b</code>.
|-
| <tt>\B</tt> || Abbina una posizione che non è un limite di parola || <tt>\Ba\B</tt> abbina <tt>a</tt>, ma solo se si trova in mezzo ad una parola, non agli estremi
|}
{{references}}
 
=== Raggruppare i caratteri ===
Per raggruppare i caratteri nelle espressioni regolari si usando le parentesi tonde: <code>()</code>. Ad esempio, <code>(\d\w)+</code> abbina una o più sequenze di una cifra e un carattere di parola (ad esempio <code>5a7v4g</code> ma non <code>3f5r8</code>. All'interno delle parentesi è anche possibile usare il carattere <code>|</code> per indicare una scelta tra due alternative: <code>(Java|VB)Script</code> abbina sia JavaScript che VBScript.
 
=== Backreference ===
I ''backreference'' sono una interessante funzionalità delle espressioni regolari che permette di riferirsi ai caratteri abbinati da un gruppo indicato in precedenza con le parentesi. Per indicare una backreference si usa la sintassi <code>\''n''</code>, dove ''n'' è il numero del gruppo a cui si vuole riferire: il primo gruppo sarà indicato con <code>\1</code>, il secondo con <code>\2</code>, ecc...
<br/>Supponiamo ad esempio di volere una stringa formata da un solo carattere di parola ripetuto più volte, qualunque esso sia (ad esempio <code>aaaaaaaa</code> ma non <code>aaabaaa</code>: il primo carattere sarà quindi <code>\w</code>. Per poter fare riferimento al carattere abbinato da <code>\w</code> lo mettiamo tra parentesi: <code>(\w)</code>; ora <ocde>\1</code> abbinerà il carattere abbinato all'inizio. La nostra regex sarà quindi <code>(\w)\1+</code>.
 
== Metodi ==
Le principale funzioni utilizzate insieme alle espressioni regolari sono le funzioni <code>split()</code>, <code>replace()</code>, <code>search()</code> e <code>match()</code> dell'oggetto String, che supportano come parametro un'espressione regolare.
 
[[Categoria:JavaScript|Espressioni regolari]]
 
{{Avanzamento|5075%|3111 gennaiofebbraio 2008}}