În lecția anterioară, am început să studiem metoda de căutare și expresiile regulate. Acum vom continua să lucrăm cu acest lucru și vom lua în considerare expresiile de la începutul și sfârșitul liniei.
Strict vorbind, expresiile regulate sunt o limbă specială pentru descrierea șabloanelor de șir. Este un instrument pentru a găsi șiruri de caractere, verificându-le pentru conformitatea cu un șablon și alte lucrări similare. Implementarea acestui instrument diferă în diferite limbi de programare. deși nu prea mult.
Pe acest site www.exlab.net este posibil să descărcați o foaie ieftină pe expresii regulate. Sau descărcați arhiva din linkul de mai jos.
Căutare metodă - expresie regulată - - exact n
Să revenim la exemplul din lecția anterioară. unde se folosește expresia regulată \ d. ceea ce înseamnă orice cifră de la 0 la 9. am căutat o secvență de șase cifre. Pentru aceasta, expresia regulată \ d a trebuit să fie specificată de șase ori.
var index = prompt ("Introduceți codul poștal de la șase cifre");
var regular = / \ d /; / * Expresii regulate: \ d și - o secvență de șase cifre * /
var rezultat = index. căutare (regulat); / * Căutarea unui model într-un șir * /
/ * Apoi facem o condiție pentru verificare. * /
dacă (rezultat == -1)
documentul. scrie ("ați introdus incorect indexul - trebuie să fie format din șase cifre");
>
altfel
documentul. scrie (indexul dvs. + index);
>
Căutare metodă - Expresie regulată
A înseamnă exact 6 (orice număr poate fi specificat în paranteze curbate).Căutare metodă - expresie regulată - ^ - începutul liniei
Să aruncăm o privire mai atentă la exemplul anterior.
Să presupunem că utilizatorul specifică corect codul poștal, adică contractul va introduce șase cifre, dar în același timp va scrie mai întâi câteva cuvinte: "Indicele meu este 394000".
Încercați să faceți acest lucru și, ca rezultat, veți vedea întreaga linie: "Indexul meu este 394000".
Și dacă nu avem nevoie doar de un cod poștal.
Din nou, uitați-vă la foaia de înșelătorie pentru expresii regulate.
Aici expresia regulată ^ ne va ajuta. ceea ce înseamnă începutul liniei.
var index = prompt ("Introduceți codul poștal de la șase cifre");
var regular = / ^ \ d /; / * Expresii regulate: ^ - începutul liniei, \ d și - o secvență de șase cifre * /
var rezultat = index. căutare (regulat); / * Căutarea unui model într-un șir * /
/ * Apoi facem o condiție pentru verificare. * /
dacă (rezultat == -1)
documentul. scrie ("ați introdus incorect indexul - trebuie să fie format din șase cifre");
>
altfel
documentul. scrie (indexul dvs. + index);
>
Acum, orice text aflat în fața codului poștal va avea ca rezultat un rezultat de -1. adică vom vedea: "ați introdus incorect indexul - acesta trebuie să fie format din șase cifre".
Căutare metodă - Expresie regulată - $ - Sfârșitul liniei
Un lucru mai mult. Vom termina acest exemplu până la sfârșit.
Să presupunem că utilizatorul din nou specifică corect codul poștal, numai acum va scrie câteva cuvinte după el. «394000 - Indexul meu».
Expresia regulată ^ - începutul liniei nu ajută. Dar există un alt simbol de $ - dolar, ceea ce înseamnă sfârșitul liniei
var index = prompt ("Introduceți codul poștal de la șase cifre");
var regulat = / ^ \ d $ /; / * Expresii regulate: ^ - începutul liniei, \ d și - o secvență de șase cifre, $ - Sfârșitul liniei * /
var rezultat = index. căutare (regulat); / * Căutarea unui model într-un șir * /
/ * Apoi facem o condiție pentru verificare. * /
dacă (rezultat == -1)
documentul. scrie ("ați introdus incorect indexul - trebuie să fie format din șase cifre");
>
altfel
documentul. scrie (indexul dvs. + index);
>
Acum, orice text aflat atât înainte, cât și după codul poștal va avea ca rezultat rezultatul că vom primi -1. adică vom vedea: "ați introdus incorect indexul - acesta trebuie să fie format din șase cifre".
Altele decât asta! Datorită faptului că expresia regulată \ d. adică la secvența de 6 cifre, expresiile ^ și $ - ale începutului și sfârșitului liniei sunt adăugate în același timp, iar acum este imposibil de introdus 7, 8 sau mai multe cifre consecutiv.
Temele de acasă sună astfel:
Scrie o funcție care ia ca parametru o variabilă care conține un șir și verifică cu o expresie regulată dacă conținutul acestei variabile începe cu o cifră sau nu.
Funcția afișează rezultatul lucrărilor sale pe ecran.
Variabilă pentru a trece la funcția: var forTesting = "8 pinguini și 9 morcovi";
Aici vom lucra cu funcții și cu condiția if-else.
var forTesting = "8 pinguini și 9 crap";
funcția firstPosition () / * Crearea unei funcții * /
var regular = / \ d /; / * Expresie regulată - Digit * /
var rezultat = pentru testare. căutare (regulat); / * Căutarea numărului în linie * /
dacă (rezultatul == 0) / * Dacă numărul este la începutul liniei, atunci. * /
documentul. scrie ("Șirul începe cu un număr");
>
altfel / * În caz contrar. * /
documentul. scrie ("NU există cifre la începutul liniei");
>
firstPosition (forTesting); / * Apelați funcția * /
Fiți atenți. În soluția de mai sus, am creat o funcție firstPosition () fără un parametru, iar în corpul funcției (în instrucțiunile pentru aceasta) am lucrat direct cu variabila forTesting. care este apoi specificat ca parametru funcțional atunci când este apelat.
var forTesting = "8 pinguini și 9 crap";
funcția firstPosition (Ex) / * Crearea unei funcții - parametrul Ex * /
var regular = / \ d /; / * Expresie regulată - Digit * /
var rezultat = Ex. căutare (regulat); / * Căutarea numărului în linie * /
dacă (rezultatul == 0) / * Dacă numărul este la începutul liniei, atunci. * /
documentul. scrie ("Șirul începe cu un număr");
>
altfel / * În caz contrar. * /
documentul. scrie ("NU există cifre la începutul liniei");
>
firstPosition (forTesting); / * Apelați funcția * /
Încercați să introduceți mai întâi numărul, apoi textul sau invers. Pentru aceasta, utilizați metoda promptă.
var forTesting = prompt ("Introduceți mai întâi numărul, apoi textul și invers");
funcția firstPosition (Ex) / * Crearea unei funcții - parametrul Ex * /
var regular = / \ d /; / * Expresie regulată - Digit * /
var rezultat = Ex. căutare (regulat); / * Căutarea numărului în linie * /
dacă (rezultatul == 0) / * Dacă numărul este la începutul liniei, atunci. * /
documentul. scrie ("Șirul începe cu un număr");
>
altfel / * În caz contrar. * /
documentul. scrie ("NU există cifre la începutul liniei");
>
firstPosition (forTesting); / * Apelați funcția * /
Rețineți că făcând condiția dacă (rezultat == 0). am spus că suntem interesați de poziția zero a numărului în linie.
Apoi, ia în considerare o soluție ușor diferită la această problemă, în care condiția este altfel formulată.
var forTesting = prompt ("Introduceți mai întâi numărul, apoi textul și invers");
funcția firstPosition () / * Crearea unei funcții * /
var regular = / \ d /; / * Expresie regulată - Digit * /
var rezultat = pentru testare. căutare (regulat); / * Căutarea numărului în linie * /
dacă (rezultatul == -1) / * Dacă în șir nu există NU, atunci. * /
documentul. scrie ("Linia nu începe cu un număr");
>
altfel / * În caz contrar. * /
documentul. scrie ("La începutul liniei numărul");
>
firstPosition (forTesting); / * Apelați funcția * /
Aici am schimbat condiția: if (rezultat == -1). În același timp, dacă introduceți mai întâi un număr, vom vedea "La începutul liniei numărul" - adică totul este adevărat! Dar dacă introduceți mai întâi textul și apoi numărul - vom vedea același lucru "La începutul liniei, cifra."
Faptul este că dacă (rezultatul == -1) indică faptul că expresia regulată \ d. adică, orice număr - ar trebui să fie în principiu în linie și nu contează - la începutul sau nu. Prin urmare, aici trebuie să adăugați expresia regulată ^ - Începutul liniei. Vedeți exemplul de mai jos.
var forTesting = prompt ("Introduceți mai întâi numărul, apoi textul și invers");
funcția firstPosition () / * Crearea unei funcții * /
var regular = / ^ \ d /; / * Expresie regulată - Start linie + Digit * /
var rezultat = pentru testare. căutare (regulat); / * Căutarea numărului în linie * /
dacă (rezultat == -1) / * Dacă nu există NU cifre la începutul liniei, atunci. * /
documentul. scrie ("Linia nu începe cu un număr");
>
altfel / * În caz contrar. * /
documentul. scrie ("La începutul liniei numărul");
>
firstPosition (forTesting); / * Apelați funcția * /
Acum, dacă încercați să introduceți mai întâi textul și apoi cifra, atunci vom vedea "Linia nu începe cu numerele". deoarece expresia regulată ^ \ d ne spune că numărul trebuie localizat exact la începutul liniei.