671 Shares 9086 views

Javascript, esempi di espressioni regolari, controllare Regular Expression

Prima dell'avvento del linguaggio ipertestuale, ma piuttosto, fino a quando è diventato chiaro che non dobbiamo solo guardare, ma per farlo, in determinate condizioni, in un luogo particolare, sotto i dati modificati nelle giuste quantità, la ricerca di consueto e sostituire la funzione organizzato qualsiasi sofisticato programmatore. Creare capolavori di ricerca dell'arte nei linguaggi di programmazione, e il database eccelleva nelle forme di condizioni di campionamento, dotato di stored procedure, trigger e altri mezzi di campioni ingombranti tracce di informazione relazionale. L'aspetto della espressione regolare per la rivoluzione non ha portato, ma era un modo utile e conveniente per trovare e sostituire le informazioni. Ad esempio, le espressioni regolari JavaScript e-mail semplificano in maniera significativa la registrazione dei visitatori, non vengono caricati sul sito l'invio di messaggi a indirizzi inesistenti.

A dire che un'espressione regolare JavaScript è molto migliori sequenze produmannnyh indexOf () chiama nel telaio di ciclico e operatori convenzionale, non può non dire che ha fatto il codice script è compatto, ma poco comprensibile per i non iniziati, può essere senza ambiguità.

Oggetto RegExp = + motore di template

Regolari Le espressioni – è un motore di template +. Il primo è in realtà un'espressione regolare – oggetto JavaScript – la RegExp, la seconda – questo modello performer, applicarlo alla linea. Motori che implementano le espressioni regolari per ogni linguaggio di programmazione sono diverse. E anche se non tutte le differenze sono significative, va tenuto a mente, così come essere sicuri di controllare con attenzione l'espressione regolare prima delle operazioni.

Una notazione speciale quando si scrivono le espressioni regolari è abbastanza facile da usare e molto efficace, ma richiede cura, pulizia e pazienza da parte dello sviluppatore. Con la notazione modelli di espressioni regolari devono abituarsi. Questa non è una moda, è la logica di un meccanismo per l'attuazione di «espressioni regolari JavaScript ".

modello di espressione regolare

Ha permesso che due opzioni:

var Expone = / abc * / i;

var expTwo = RegExp ( "abc *", "i");

Tipicamente utilizzato il primo metodo. Nel secondo caso, le virgolette, perché per usare il carattere '', deve essere sfuggito dalle norme generali.

'I' – flag che indica "case insensitive". È inoltre possibile utilizzare le bandiere g '- «Global Search' e 'M' – una ricerca su più righe.

Il simbolo '/' per indicare comune l'uso di un modello.

L'inizio e la fine dell'espressione regolare

Il '^' definisce il carattere (s) da cui iniziare l'espressione regolare, e il '$' determina quale carattere (s) deve essere alla fine. Non si dovrebbe sperimentare con loro all'interno di un'espressione, dove hanno un significato diverso.

Ad esempio,

var eRegExp = new RegExp (cRegExp, 'i');

var cRegRes = '';

var STest = 'ABCZ';

if (eRegExp.test (STest)) {

cRegRes + = '- Si';

} Else {

cRegRes + = '- No';

}

var dTestLine = document.getElementById ( 'scTestLine');

dTestLine.innerHTML = 'espressione /' + cRegExp + '/ per riga "' + STest + '' +" cRegRes.

L'elemento 'scTestLine' risulterà (variabile cRegExp ha un significato corrispondente):

espressione / ^ ABCZ $ / per la stringa "abcz" – Sì

Se si rimuove la 'i' di bandiera, il risultato è il seguente:

espressione / ^ ABCZ $ / per la stringa "abcz" – No

Il contenuto di un'espressione regolare

Un'espressione regolare è una sequenza di caratteri, che è l'oggetto della ricerca. Espressione / QWERTY / in cerca di intervento è questa sequenza:

espressione / QWERTY / per stringa "qwerty" – Sì

espressione / QWERTY / per stringa "123qwerty456" – Sì

I cambiamenti '^' sono espressioni:

espressione / ^ qwerty / per stringa "123qwerty456" – No

espressione / ^ qwerty / per stringa "qwerty456" – Sì

Allo stesso modo, per la fine del simbolo di una linea. Le espressioni regolari consentono di coerenza: per esempio, [az], [AZ], [0-9] – tutte le lettere dell'alfabeto, in questo caso o di figure. lettere russe possono anche essere utilizzati, ma dovrebbe prestare attenzione alla codifica delle stringhe (che è ricercato che si cerca) e le pagine. Spesso le lettere russe, così come i caratteri speciali, è preferibile impostare i codici.

Quando si forma un'espressione regolare può specificare le opzioni per la presenza di alcuni simboli in una posizione particolare, con il loro numero indicato: '*' = 0 ripetizione o più volte; '+' = 1 o più tempi di ripetizione; {1} è lo stesso, come '+'; {N} = ripetizione esattamente n volte; {N,} = n ripetizione volte o più; {N, m} = ripetizione di n per m volte.

Utilizzando le staffe, è possibile specificare il set di caratteri di opzioni. Ecco come si presenta. [Abcd] = [ad] = ogni quattro simbolo: 'a', 'b', 'c' e 'd'. È possibile specificare il contrario. Qualsiasi carattere diverso da quelli specificati nel set: [^ abcd] = qualsiasi carattere diverso da 'a', 'b', 'c' o 'd'. '?' Indica che a questo punto il simbolo non può essere. '' specifica qualsiasi carattere che indicare la nuova riga. Questo ' n', ' r', ' u2028' o ' u2029'. L'espressione ' s * | S *' = '[ s | S] *' significa la ricerca di qualsiasi carattere, includendo i fine riga.

versioni semplificate di espressioni regolari

L'espressione '[ s | S] *' – spazio di ricerca, o la sua assenza, che è tutto ciò che è sulla linea. In questo caso, il simbolo ' s' indica uno spazio, e '' S – la sua assenza.

Allo stesso modo, si può usare ' d' per cercare le cifre decimali, e ' D' trovare un carattere non numerico. Notazione ' f', 'r' e ' n' corrisponde alla forma avanzamento, ritorno carrello e avanzamento di riga.

Il carattere di tabulazione – ' t', verticale – ' v'. La denominazione ' w' trova qualsiasi carattere alfabeto latino (lettere, cifre e il segno di sottolineatura) = [A-Za-z0-9_].

La denominazione ' W' è equivalente a [^ A-Za-z0-9_]. Questo significa che qualsiasi carattere che non è una lettera dell'alfabeto, il numero o '_'.

Ricerca carattere ' 0' = ricerca caratteri NUL. Cerca ' xHH' o ' uhhhh' = Ricerca codice carattere o HHHH HH, rispettivamente. H – cifra esadecimale.

formulazione raccomandata e la codifica delle espressioni regolari

Qualsiasi espressione regolare è importante testato con attenzione su diverse versioni di righe.

Con l'esperienza di creazione di un errore di espressione regolare sarà più piccola, ma comunque deve essere sempre tenuto presente che la propria conoscenza delle regole di scrittura di espressioni regolari non può essere vero, soprattutto quando la "stagione regolare" viene trasferito da una lingua all'altra.

La scelta tra il classico (indicazione esatta) e una versione semplificata di un'espressione regolare, è meglio preferire il primo. Dopo tutto, i classici è sempre chiaramente indicato che entrambi hanno cercato. Se l'espressione regolare o stringa di ricerca hanno lettere russe, dovrebbe portare ad un singolo che codificano per tutte le linee e la pagina su cui opera trovare JavaScript-codice esegue un'espressione regolare.

Quando c'è un'elaborazione di carattere, alfabeto non latino, ha senso considerare l'indicazione dei codici di carattere, non i personaggi stessi.

Quando si implementa gli algoritmi di ricerca in JavaScript espressioni regolari devono essere attentamente controllati. È particolarmente importante controllare la codifica dei caratteri.

Le parentesi nell'espressione regolare

Le staffe definiscono le opzioni per il simbolo, che deve essere o non può essere in un certo luogo, e rotondo – varianti di sequenza. Ma questa è solo una regola generale. Da lì non fa eccezione, ma c'è una vasta gamma di applicazioni.

var cRegExp = "[az] * (png | jpg | gif).";

var eRegExp = new RegExp (cRegExp, 'i');

var cRegRes = '';

var STest = 'immagine.jpg';

if (eRegExp.test (STest)) {

cRegRes + = '- Si';

} Else {

cRegRes + = '- No';

}

i risultati:

/[az]*.(png|jpg|gif)/ espressione per la linea "picture.jpg" – Sì

espressione /^[ad][az]*.(png|jpg|gif)/ per la linea "picture.jpg" – No

/^[ad][az]*.(png|jpg|gif)/ espressione per la linea "apicture.jpg" – Sì

espressione /^[ad][az]*.(png|jpg|gif)/ per la linea "apicture.jg" – No

Va notato che tutti, allora un asterisco può essere presente zero volte. Ciò significa che la "stagione regolare" potrebbe funzionare in modi inaspettati, almeno.

Controllare RegExp – e-mail di prova

Al espressioni regolari JavaScript ottenuto due metodi, di test e exec, e può essere utilizzato in linee di oggetti (String) nei loro metodi (funzioni): ricerca, divisione, la sostituzione e la partita.

metodo di prova è già stata dimostrata, essa consente di verificare la correttezza della espressione regolare. Metodo Risultato: vero / falso.

Considerate le seguenti espressioni regolari JavaScript. Controllare la posta elettronica dal numero di "difficile, ma certamente":

var eRegExp = /^(([^()[]\.,;:s@"]+(.[^()[]\.,;:s @ "] +) *) | (". + ")) @ (( [[0-9] {1,3} [0-9] {1,3} [0-9] {.. . 1,3} [0-9] {1,3}]) | (. ([a-zA-Z -0-9] + ) + [a-zA-Z] {2}) ) $ /;

una var stringa di STest ='[email protected] 'dà il vero, allora c'è questa stringa è l'indirizzo e-mail corretto. La verifica è stata effettuata da eRegExp.test (STest).

Uso pratico: il trattamento di e-Mail

metodo Exec fornisce la matrice di output, chiamare:

var aResult = eRegExp.exec (STest);

cRegRes = '
' + aResult.length + '
';
for (var i = 0; i <aResult.length; i ++) {
cRegRes + = aresult [i] + '
';
}

Dà il seguente risultato:

9
[email protected]
Slava.Chip
Slava.Chip
.Chip
indefinito
sci.by
indefinito
sci.by
sci.

Altri metodi funzionano in modo simile. Si consiglia di controllare fuori da soli. Sviluppo e l'uso di espressioni regolari, è auspicabile lavorare in pratica, il codice copia non è sempre consigliabile qui.

Popolare "regular season"

JavaScript espressione regolare dato alle e-mail, non solo ci sono molte opzioni più facili. Ad esempio, /^[w-.]+@[w-]+.[az]{2,3}$/i. Tuttavia, questa forma di realizzazione tiene conto non tutte le forme di realizzazione del record indirizzo email.

Naturalmente, è necessario visualizzare l'esperienza dei colleghi, per analizzare come la loro proposto, prima di progettare il proprio Javascript espressioni regolari. Ma ci sono alcune difficoltà. Non dobbiamo dimenticare che una delle espressioni regolari JavaScript (esempi di quando si copia) possono duplicare i caratteri essenziali: '', '/' o preventivi. Ciò porterà ad errore, che è possibile cercare a lungo.

E 'importante prendere in considerazione il solito "dimensione umana". Dopo JavaScript espressione regolare formale per il telefono, che può essere il visitatore (persona), è dato in diversi modi: 123-45-67, (29) 1234567, o 80.291.234,567 mila 375.291.234.567. Ed è tutto lo stesso numero. Spelling più pattern non è sempre accettabile e rigida fissazione delle regole per scrivere i numeri possono creare disagio o restrizioni non necessarie. Opzione / ^ d [ d () -] {4,14} d $ / i è adatto alla maggior parte dei casi si controlla il numero di telefono.

Se si vuole fare un JavaScript espressioni regolari, solo controlli cifre, anche un caso così semplice richiede un chiarimento. Dovrebbe essere considerato un numero intero o frazionario, notazione scientifica, o numero normale, positivo o negativo. Si può anche prendere in considerazione l'esistenza del simbolo di valuta, il numero di cifre dopo la virgola e la divisione di tutta la parte del numero sulla triade.

Espressione / ^ d + $ / I Mostra solo numeri e di espressione /^d+.d+$/i consente l'utilizzo di un punto per indicare la parte frazionaria del numero.

In JavaScript controllo espressioni regolari può essere utilizzato per indicare il formato dei dati di ingresso disco, che è importante, soprattutto quando si entra profili, dati del passaporto, e indirizzi legali t. D.

Controllare le date – semplice al complesso

Consideriamo un altro JavaScript espressioni regolari. Esempi fino ad oggi, come per il numero di numeri telefonici rappresentano scelta tra rigidità e flessibilità. Data dell'evento – uno dei dati essenziali, che spesso hanno da somministrare. Ma fissare l'ingresso in un formato specifico: "gg-mm-aaaa 'o' d.m.gg 'spesso porta a insoddisfazione del cliente. Il passaggio dal campo di immissione del giorno per mese, pieno di HTML-forma classica, non può avvenire quando si entra una sola cifra, e il secondo ingresso può essere difficile. Per esempio, nel campo della giornata è stato introdotto 3 ed il successivo numero 2 non sostituisce la prima, ed è attribuita a lei 32, che, naturalmente, causerà disagi.

Efficienza e la convenienza delle espressioni regolari dipendono essenzialmente la costruzione generale di un dialogo con il visitatore. In un caso, per indicare la data si consiglia di utilizzare un campo di input della forma, nell'altro caso è necessario fornire per i diversi campi per giorno, mese e anno. Ma poi eventuali "costi di codice" aggiuntive per controllare l'anno bisestile, il numero di mesi, il numero di giorni in loro.

Ricerca e sostituzione, la memoria espressione regolare

JavaScript sostituire (espressioni regolari) utilizzando il metodo dell'oggetto String, e ci permettono di trovare il valore e cambiare immediatamente. Questo è utile per correggere gli errori di battitura, modificare il contenuto dei campi del modulo e per la conversione dei dati da un formato di presentazione ad un altro.

var cRegExp = / ([a-z] +) s ([a-z] +) s ([a-z] +) / i; // durante la ricerca sono tre 'variabili'

var STest = 'questo articolo è buono!';
var = cRegRes sTest.replace (cRegExp, "$ 2, $ 3, $ 1");

var dTestLine = document.getElementById ( 'scTestLine');

dTestLine.innerHTML = 'espressione' + cRegExp + 'per la stringa "' + STest + '" girare:' + cRegRes;

risultato:

espressione / ([az] +) s ([az] +) s ([az] +) / i per la linea "questo articolo è buono!" out: l'articolo è buono, questo!

Durante l'esecuzione di ciascuna coppia di parentesi memorizza il risultato nella 'variabile' $ n, dove n – numero di coppie di parentesi ($ 1, $ 2, …). A differenza dei tradizionali, qui numerazione variabile è 1, non 0.

raccomandazioni generali

espressione regolare semplifica il codice, ma il tempo per svilupparlo spesso fa la differenza. Si può iniziare con disegni semplici e poi ha fatto di combinare in espressioni più complesse. È possibile utilizzare vari servizi online per testare le espressioni regolari o locale attrezzi speciali.

L'opzione migliore sarà creare una propria libreria di espressioni regolari e propri strumenti per testare nuovi sviluppi. Questo è il modo migliore per consolidare l'esperienza e per imparare a costruire rapidamente la progettazione affidabile e confortevole.

Usando ripetizione di caratteri e stringhe, cioè, caratteri speciali '*', '+' e graffe, che indica il numero di ripetizioni deve essere guidata dai principi di semplicità e convenienza. E 'importante rendersi conto che un'espressione regolare per l'inizio del suo lavoro, e per ottenere il risultato è del tutto nella potenza del motore utilizzato dal browser. Non tutte le lingue sono equivalenti a JavaScript. Ogni browser potrebbe portare le loro preferenze personali nella interpretazione delle espressioni regolari.

La compatibilità non solo pagine e fogli di stile è, per le espressioni regolari, ma ha anche a che fare. La pagina utilizza JavaScript, può essere considerato un buon funzionamento solo quando ha lavorato con successo una varietà di browser.

JavaScript, String e RegExp

Con il lavoro giusto a livello di client, che è, nel browser del visitatore in JavaScript, che richiede elevate competenze dello sviluppatore. Abbastanza a lungo avete la possibilità di eseguire il debug JavaScript codice di fondi propri o con l'aiuto di estensioni di terze parti, editor di codice, programmi indipendenti browser.

Tuttavia, non tutti i casi, il debugger in grado di gestire e fornire un buon supporto per lo sviluppatore, un rilevamento degli errori rapida, individuare i colli di bottiglia. I tempi in cui il computer si è concentrata sui calcoli, in un lontano passato. Ora, prestare particolare attenzione alle informazioni e di linea oggetti sono venuti a giocare un ruolo significativo. Il numero delle corde d'acciaio, e la loro vera natura si manifestano solo al momento giusto e nel luogo giusto.

Le espressioni regolari rafforzano la possibilità di linee, ma richiedono il rispetto di sé. Debug RegExp nel suo lavoro, anche se è possibile simulare, idea non troppo interessante.

Comprendere la struttura e la logica dell'oggetto RegExp, che significa String oggetto, la sintassi e la semantica di JavaScript – un vero e proprio codice di sicuro e protetto, il funzionamento stabile di ogni pagina e il sito nel suo complesso.