VBScript - Espressioni regolari
Le espressioni regolari sono una sequenza di caratteri che forma un modello, utilizzato principalmente per la ricerca e la sostituzione. Lo scopo della creazione di un pattern è quello di abbinare stringhe specifiche, in modo che lo sviluppatore possa estrarre i caratteri in base alle condizioni e sostituire determinati caratteri.
Oggetto RegExp
L'oggetto RegExp aiuta gli sviluppatori ad abbinare il modello di stringhe e le proprietà e i metodi ci aiutano a lavorare facilmente con le espressioni regolari. È simile a RegExp in JavaScript
Proprietà
Pattern - Il metodo Pattern rappresenta una stringa che viene utilizzata per definire l'espressione regolare e dovrebbe essere impostato prima di utilizzare l'oggetto espressione regolare.
IgnoreCase- Una proprietà booleana che rappresenta se l'espressione regolare deve essere verificata rispetto a tutte le possibili corrispondenze in una stringa se vera o falsa. Se non specificato in modo esplicito, il valore IgnoreCase è impostato su False.
Global- Una proprietà booleana che rappresenta se l'espressione regolare deve essere verificata rispetto a tutte le possibili corrispondenze in una stringa. Se non specificato in modo esplicito, il valore globale è impostato su False.
Metodi
Test(stringa di ricerca) - Il metodo Test accetta una stringa come argomento e restituisce True se l'espressione regolare può essere confrontata correttamente con la stringa, altrimenti viene restituito False.
Replace(stringa di ricerca, stringa di sostituzione) - Il metodo Replace accetta 2 parametri. Se la ricerca ha esito positivo, sostituisce quella corrispondenza con la stringa di sostituzione e viene restituita la nuova stringa. Se non ci sono corrispondenze, viene restituita la stringa di ricerca originale.
Execute(stringa di ricerca) - Il metodo Execute funziona come Replace, tranne per il fatto che restituisce un oggetto della raccolta Matches, contenente un oggetto Match per ogni corrispondenza riuscita. Non modifica la stringa originale.
Corrisponde all'oggetto della raccolta
L'oggetto della raccolta Matches viene restituito come risultato del metodo Execute. Questo oggetto di raccolta può contenere zero o più oggetti Match e le proprietà di questo oggetto sono di sola lettura.
Count - Il metodo Count rappresenta il numero di oggetti match nella raccolta.
Item - Il metodo Item consente di accedere agli oggetti match dall'oggetto delle raccolte di corrispondenze.
Abbina oggetto
L'oggetto Match è contenuto nell'oggetto di raccolta dei match. Questi oggetti rappresentano la corrispondenza riuscita dopo la ricerca di una stringa.
FirstIndex- Rappresenta la posizione all'interno della stringa originale in cui si è verificata la corrispondenza. Questo indice è a base zero, il che significa che la prima posizione in una stringa è 0.
Length - Un valore che rappresenta la lunghezza totale della stringa corrispondente.
Value- Un valore che rappresenta il valore o il testo corrispondente. È anche il valore predefinito quando si accede all'oggetto Match.
Tutto su Pattern Parameter
La costruzione del modello è simile a PERL. La creazione di modelli è la cosa più importante quando si lavora con le espressioni regolari. In questa sezione, ci occuperemo di come creare un pattern basato su vari fattori.
Corrispondenza di posizione
L'importanza della corrispondenza della posizione è garantire di posizionare le espressioni regolari nelle posizioni corrette.
Simbolo | Descrizione |
---|---|
^ | Corrisponde solo all'inizio di una stringa. |
$ | Trova solo la fine di una stringa. |
\ b | Corrisponde a qualsiasi confine di parola |
\ B | Corrisponde a qualsiasi confine non di parola |
Corrispondenza letterale
Qualsiasi forma di carattere come alfabeto, numero o carattere speciale o anche decimale, esadecimale può essere considerato letterale. Poiché pochi dei personaggi hanno già un significato speciale nel contesto di Regular Expression, dobbiamo evitarli usando sequenze di escape.
Simbolo | Descrizione |
---|---|
Alfanumerico | Corrisponde solo ai caratteri alfabetici e numerici. |
\ n | Corrisponde a una nuova riga. |
\ [ | Corrispondenze [solo letterale |
\] | Corrispondenze] solo letterali |
\ ( | Corrispondenze (solo letterali |
\) | Corrispondenze) solo letterale |
\ t | Corrisponde alla tabulazione orizzontale |
\ v | Corrisponde alla scheda verticale |
\ | | Partite | solo letterale |
\ { | Corrisponde a {solo letterale |
\} | Trova} solo letterale |
\\ | Corrisponde solo a \ letterali |
\? | Partite? solo letterale |
\ * | Corrisponde a * solo letterale |
\ + | Corrispondenze + solo letterale |
\. | Partite. solo letterale |
\ b | Corrisponde a qualsiasi confine di parola |
\ B | Corrisponde a qualsiasi confine non di parola |
\ f | Corrisponde a un feed modulo |
\ r | Corrisponde al ritorno a capo |
\ xxx | Corrisponde al carattere ASCII di un numero ottale xxx. |
\ xdd | Corrisponde al carattere ASCII di un numero esadecimale dd. |
\ uxxxx | Corrisponde al carattere ASCII di un xxxx letterale UNICODE. |
Corrispondenza delle classi di caratteri
Le classi di caratteri sono il modello formato da raggruppamenti personalizzati e racchiuso tra parentesi graffe []. Se ci aspettiamo una classe di caratteri che non dovrebbe essere nella lista, allora dovremmo ignorare quella particolare classe di caratteri usando il simbolo negativo, che è un cap ^.
Simbolo | Descrizione |
---|---|
[xyz] | Trova una qualsiasi delle classi di caratteri racchiuse nel set di caratteri. |
[^ xyz] | Corrisponde a una qualsiasi delle classi di caratteri NON racchiuse nel set di caratteri. |
. | Corrisponde a qualsiasi classe di caratteri tranne \ n |
\ w | Trova qualsiasi classe di caratteri della parola. Equivalente a [a-zA-Z_0-9] |
\ W | Trova qualsiasi classe di caratteri non di parole. Equivalente a [^ a-zA-Z_0-9] |
\ d | Trova qualsiasi classe di cifre. Equivalente a [0-9]. |
\ D | Trova qualsiasi classe di caratteri non numerici. Equivalente a [^ 0-9]. |
\S | Trova qualsiasi classe di caratteri spazio. Equivalente a [\ t \ r \ n \ v \ f] |
\S | Trova qualsiasi classe di caratteri spazio. Equivalente a [^ \ t \ r \ n \ v \ f] |
Ripetizione di corrispondenza
La corrispondenza delle ripetizioni consente più ricerche all'interno dell'espressione regolare. Specifica inoltre il numero di volte in cui un elemento viene ripetuto in un'espressione regolare.
Simbolo | Descrizione |
---|---|
* | Corrisponde a zero o più occorrenze della data espressione regolare. Equivalente a {0,}. |
+ | Corrisponde a una o più occorrenze della data espressione regolare. Equivalente a {1,}. |
? | Corrisponde a zero o una occorrenza dell'espressione regolare data. Equivalente a {0,1}. |
{X} | Corrisponde esattamente al numero x di occorrenze dell'espressione regolare data. |
{X,} | Corrisponde ad almeno x o più occorrenze dell'espressione regolare data. |
{x, y} | Trova la corrispondenza tra x e y numero di occorrenze della data espressione regolare. |
Alternanza e raggruppamento
L'alternanza e il raggruppamento aiutano gli sviluppatori a creare espressioni regolari più complesse nella gestione in particolare di clausole complesse all'interno di un'espressione regolare che offre una grande flessibilità e controllo.
Simbolo | Descrizione |
---|---|
0 | Raggruppamento di una clausola per creare una clausola. "(xy)? (z)" corrisponde a "xyz" o "z". |
| | L'alternanza combina una clausola di espressione regolare e quindi corrisponde a una qualsiasi delle singole clausole. "(ij) | (23) | (pq)" corrisponde a "ij" o "23" o "pq". |
Costruire espressioni regolari
Di seguito sono riportati alcuni esempi che spiegano chiaramente come costruire un'espressione regolare.
Espressione regolare | Descrizione |
---|---|
"^ \ s * .." e ".. \ s * $" | Rappresenta che può esserci un numero qualsiasi di caratteri di spazio iniziali e finali in una singola riga. |
"((\ $ \ s?) | (# \ s?))?" | Rappresenta un segno $ o # facoltativo seguito da uno spazio facoltativo. |
"((\ d + (\. (\ d \ d)?)?))" | Rappresenta che è presente almeno una cifra seguita da un decimale facoltativo e due cifre dopo i decimali. |
Esempio
L'esempio seguente controlla se l'utente ha inserito o meno un ID e-mail il cui formato deve corrispondere in modo tale che ci sia un ID e-mail seguito da "@" e quindi seguito dal nome di dominio.
<!DOCTYPE html>
<html>
<body>
<script language = "vbscript" type = "text/vbscript">
strid = "[email protected]"
Set re = New RegExp
With re
.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
.IgnoreCase = False
.Global = False
End With
' Test method returns TRUE if a match is found
If re.Test( strid ) Then
Document.write(strid & " is a valid e-mail address")
Else
Document.write(strid & " is NOT a valid e-mail address")
End If
Set re = Nothing
</script>
</body>
</html>