Počítače, Programovanie
Javascript, pravidelné príklady výraz, skontrolujte regulárnych výrazov
Pred príchodom hypertextových jazykov, ale skôr, než sa ukázalo, že je potrebné nielen vyhľadávať, ale aj robiť to za určitých podmienok na konkrétnom mieste so zmenenými údajmi v správnych množstvách, obvyklé vyhľadávacie a nahradzovacie funkcie usporiadané pre akékoľvek sofistikované programátor. Mestské diela vyhľadávania v programovacích jazykoch boli vytvorené a databázy boli vylepšené vo forme podmienok odberu vzoriek, vybavené uloženými procedúrami, spúšťačmi a inými prostriedkami odberu vzoriek z komplikovaných kompozičných informácií. Vznik regulárnych výrazov pre revolúciu neviedol, ale ukázalo sa, že je užitočným a pohodlným prostriedkom na hľadanie a nahradenie informácií. Napríklad pravidelné skripty JavaScriptu JavaScript výrazne zjednodušujú registráciu návštevníkov, neťahajú stránky odoslaním správ na neexistujúce adresy.
Povedať, že regulárny výraz JavaScript je oveľa lepšie ako dobre premyslené sekvencie indexOf () v rámcovaní podmienených a cyklických operátorov, je nemožné, ale povedať, že to urobilo skript kód kompaktné, ale zle pochopené pre nezasvätených môže byť jednoznačné.
Objekt RegExp = šablóna + motor
Pravidelné výrazy sú šablóny + motory. Prvým je samotný regulárny výraz - objekt JavaScript je RegExp, druhý je vykonávateľ šablóny, ktorý ho aplikuje na reťazec. Motory, ktoré implementujú regulárne výrazy pre každý programovací jazyk, sú odlišné. A hoci nie všetky rozdiely sú dôležité, mali by ste to mať na pamäti, rovnako ako skontrolovať pravidelnú kontrolu nad regulovaným výrazom pred jeho použitím.
Špeciálna notácia pre písanie regulárnych výrazov je docela pohodlná a docela efektívna, ale vyžaduje starostlivosť, presnosť a trpezlivosť od vývojára. Na zaznamenanie vzorov regulárnych výrazov je potrebné si zvyknúť. To nie je pocta móde, je to logika implementácie mechanizmu "regulárnych výrazov JavaScript".
Vzor pravidelného výrazu
Sú povolené dve možnosti:
Var expOne = / abc * / i;
Var expTwo = RegExp ("abc *", "i");
Obvykle sa používa prvá metóda. V druhom prípade sa používajú úvodzovky, aby sa použil znak "\", ale musí sa vyhnúť spoločnými pravidlami.
"I" je označenie označujúce "register nie je dôležitý". Môžete tiež použiť príznaky "g" - "globálne vyhľadávanie" a "m" - vyhľadávanie vo viacerých riadkoch.
Symbol "/" sa používa na označenie šablóny.
Začiatok a koniec regulárneho výrazu
Znak "^" definuje znak (y), z ktorého začína regulárny výraz a '$' určuje, ktorý znak (y) by mal byť na konci. Nesnažte sa s nimi experimentovať vo vnútri výrazu, inak majú iný význam.
Napríklad,
Var eRegExp = nový RegExp (cRegExp, 'i');
Var cRegRes = '';
Var sTest = 'AbcZ';
Ak (eRegExp.test (sTest)) {
CRegRes + = '- Áno';
} Iné {
CRegRes + = '- Nie';
}
Var dTestLine = dokument.getElementById ('scTestLine');
DTestLine.innerHTML = 'Výraz /' + cRegExp + '/ pre reťazec "+ sTest +" + cRegRes.
V prvku 'scTestLine' bude výsledok (premenná cRegExp má zodpovedajúcu hodnotu):
Výraz / ^ AbcZ $ / pre reťazec "abcz" - Áno
Ak odstránite príznak "i", výsledok bude:
Výraz / ^ AbcZ $ / pre reťazec "abcz" - č
Pravidelný obsah
Regulárny výraz je sekvencia znakov, ktoré sú predmetom vyhľadávania. Výraz / qwerty / hľadá výskyt presne tejto sekvencie:
Výraz / qwerty / pre reťazec "qwerty" - Áno
Výraz / qwerty / pre reťazec "123qwerty456" - Áno
Znak '^' mení podstatu výrazu:
Výraz / ^ qwerty / pre reťazec "123qwerty456" - Nie
Výraz / ^ qwerty / pre reťazec "qwerty456" - Áno
Podobne aj pre znak konca riadku. Pravidelné výrazy umožňujú sekvencie: napríklad [az], [AZ], [0-9] - všetky písmená latinskej abecedy v zadanom registri alebo čísliciach. Môžete tiež použiť ruské písmená, ale mali by ste venovať pozornosť kódovaniu reťazcov (kde hľadať to, čo sa hľadá) a stránke. Často ruské písmená, ako špeciálne znaky, sa dávajú prednostne kódmi.
Pri vytváraní regulárneho výrazu môžete určiť možnosti prítomnosti určitých symbolov na určitom mieste s ich číslom nastaveným nasledovne: '*' = opakovanie 0 alebo viackrát; '+' = Opakovanie 1 alebo viackrát; {1,} je rovnaký ako '+'; {N} = opakovanie presne n krát; {N,} = opakovanie n a viackrát; {N, m} = opakovanie od n do m časov.
Pomocou hranatých zátvoriek môžete zadať varianty znakov. Vyzerá to takto. [Abcd] = [ad] = ľubovoľný znak štyroch: "a", "b", "c" alebo "d". Môžete určiť opak. Akékoľvek iné znaky než tie, ktoré sú uvedené v súbore: [^ abcd] = ľubovoľný znak okrem 'a', 'b', 'c' alebo 'd'. '?' Označuje, že na tomto mieste nemusí byť symbol. '' Definuje ľubovoľný znak, s výnimkou prerušenia riadku. Toto je '\ n', '\ r', '\ u2028' alebo '\ u2029'. Výraz '\ s * | \ S *' = '[\ s | \ S] *' znamená hľadanie ľubovoľného znaku vrátane zlomkov riadkov.
Zjednodušené verzie regulárneho výrazu
Výraz "[\ s | \ S] *" - hľadanie medzery alebo jeho absencie, to je všetko, čo je v riadku. V tomto prípade označenie '\ s' znamená medzeru a '\ S' znamená jeho absenciu.
Podobne môžete použiť '\ d' na hľadanie desatinnej číslice a '\ D' nájde nečíselný znak. Označenia '\ f', 'r' a '\ n' zodpovedajú krmivu formátu, návratu vozíka a kŕmenej linky.
Znaková karta je '\ t', vertikálny znak je '\ v'. Označenie '\ w' nájde ľubovoľný znak latinskej abecedy (písmená, čísla, podčiarknuté) = [A-Za-z0-9_].
Označenie '\ W' je ekvivalentné [^ A-Za-z0-9_]. To znamená ľubovoľný znak, ktorý nie je písmenom latinskej abecedy, číslo alebo znak "_".
Vyhľadajte znak '\ 0' = vyhľadajte znak NUL. Vyhľadajte '\ xHH' alebo '\ uHHHH' = vyhľadajte znak s HH alebo HHHH kódom, resp. H - hexadecimálna číslica.
Odporúčaný jazyk a kódovanie regulárneho výrazu
Akýkoľvek regulárny výraz je dôležitý na dôkladné otestovanie rôznych možností linky.
Pri skúsenostiach s vytváraním regulárnych výrazov budú chyby menšie, ale napriek tomu treba vždy pamätať na to, že vlastné znalosti pravidiel písania regulárneho výrazu nemusia zodpovedať skutočnosti, najmä keď sa "bežná" prevádza z jedného jazyka do druhého.
Pri výbere medzi klasikou (presná indikácia) a zjednodušenou verziou regulárneho výrazu je lepšie uprednostniť prvú. Koniec koncov, klasika vždy jasne uvádza, čo sa hľadá. Ak sú v regulárnom alebo vyhľadávacom reťazci ruské písmená, mali by ste vyústiť do jediného kódovania všetkých riadkov a stránky, na ktorej funguje kód JavaScript, ktorý vykonáva regulárny výraz.
Pri spracovaní znakov, ktoré nepatria latinskej abecede, je zmysluplné zvážiť špecifikáciu znakových kódov, nie samotných znakov.
Pri implementácii vyhľadávacích algoritmov JavaScript by mal byť regulárny výraz starostlivo kontrolovaný. Zvlášť dôležité je riadiť kódovanie znakov.
Zápichy v regulárnych výrazoch
Hranaté zátvorke určujú varianty znakov, ktoré sa musia alebo nemajú nachádzať na určitom mieste, a okrúhle sú varianty sekvencií. Ale toto je len všeobecné pravidlo. Neexistujú žiadne výnimky, ale existuje veľa rôznych aplikácií.
Var cRegExp = "[az] *. (Png | jpg | gif)";
Var eRegExp = nový RegExp (cRegExp, 'i');
Var cRegRes = '';
Var sTest = 'obrázok.jpg';
Ak (eRegExp.test (sTest)) {
CRegRes + = '- Áno';
} Iné {
CRegRes + = '- Nie';
}
výsledky:
Expression /[az]*.(png|jpg|gif)/ pre riadok "picture.jpg" - Áno
Expression / ^^ad][az]*.(png|jpg|gif)/ pre riadok "picture.jpg" - Nie
Expression /^[ad][az]*.(png|jpg|gif)/ pre reťazec "apicture.jpg" - Áno
Expression / ^[ad][az]*.(png|jpg|gif)/ pre reťazec "apicture.jg" - Nie
Mali by sme špeciálne poznamenať, že všetko, po ktorom je hviezda, môže byť prítomná nula. To znamená, že "pravidelné" môže pracovať najmenej neočakávaným spôsobom.
Kontrola RegExp - testovací e - mail
V regulárnom jazyku sa v regulárnych výrazoch získavajú dve metódy, testovať a vykonávať a môžu byť použité v metódach String v ich metódach: hľadanie, rozdelenie, nahradenie a zhoda.
Testovacia metóda už bola preukázaná, umožňuje vám skontrolovať správnosť regulárneho výrazu. Výsledok metódy je true / false.
Zvážte nasledujúce bežné výrazy jazyka JavaScript. Kontrola e-mailu z počtu "ťažkých, ale presných":
Var eRegExp = /((([<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>> +)))))))))))))))))), 1,3}, [0-9] {1,3}]) | (([a-zA-Z \ -0-9] +) + [A-zA-Z] ) $ /;
Pre reťazec var sTest ='SlavaChip@sci.by 'je pravdivé, to znamená, že tento reťazec je správna e-mailová adresa. Kontrola sa vykonala pomocou metódy eRegExp.test (sTest).
Praktické použitie: spracovanie e-mailu
Metóda exec na výstupu poskytuje pole, volanie:
Var aResult = eRegExp.exec (sTest);
CRegRes = '
' + aResult.length + '
';
Pre (var i = 0, i
';
}
Dáva nasledujúci výsledok:
9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
nedefinovaný
sci.by
nedefinovaný
sci.by
sci.
Ostatné metódy fungujú podobne. Odporúča sa ich skontrolovať sami. Vývoj a používanie regulárnych výrazov je žiaduce prakticky praktizovať, kopírovanie kódu nie je vždy vhodné.
Populárne "pravidelné"
Vyššie uvedený regulárny výraz jazyka JavaScript pre e-mail nie je jediný, existuje veľa jednoduchších možností. Napríklad, /^[w-\.]+@[\w-]+\.[az]{2,3}$/i. Táto možnosť však nezohľadňuje všetky možnosti nahrávania e-mailovej adresy.
Samozrejme, musíte skontrolovať skúsenosti svojich kolegov a analyzovať metódy, ktoré ponúkajú, skôr ako vytvoríte svoj vlastný regulárny výraz v jazyku JavaScript. Existujú však isté ťažkosti. Nezabudnite, že regulárne výrazy jazyka JavaScript (príklady z nich pri kopírovaní) môžu duplikovať základné znaky: '\', '/' alebo úvodzovky. To vedie k chybe, ktorú je možné dlho vyhľadávať.
Je dôležité brať do úvahy obvyklý "ľudský aspekt". Napokon, formálny JavaScriptový regulárny výraz pre telefón, ktorý môže byť návštevníkom (osobou), môže byť označený rôznymi spôsobmi: 123-45-67, (29) 1234567, 80291234567 alebo +375291234567. A je to rovnaké číslo. Variant písania viacerých šablón nie je vždy prijateľný a prísna fixácia pravidla pre písanie čísla môže spôsobiť zbytočné nepríjemnosti alebo obmedzenia. Variant / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i je vhodný pre väčšinu prípadov overovania telefónu.
Ak chcete vytvoriť JavaScript regulárne výrazy, iba číslice kontrolu, potom aj taký jednoduchý prípad vyžaduje objasnenie. Musí zvážiť celé číslo alebo zlomok, exponenciálnu notáciu alebo bežné, pozitívne alebo záporné číslo. Môžete tiež zvážiť prítomnosť symbolu meny, počet číslic za desatinnou čiarkou a rozdelenie celej časti čísla na triadlá.
Výraz / ^ \ d + $ / i bude kontrolovať len číslice a výraz / ^ \ d + \. \ D + $ / i vám umožní použiť určitú časť na označenie čiastočnej časti čísla.
V jazyku JavaScript je možné kontrolovať regulárne výrazy na určenie formátu vstupných údajov, čo je dôležité najmä pri zadávaní dotazníkov, pasových údajov, právnych adries atď.
Kontrola dátumu je skomplikovaná
Zvážte JavaScript regulárne výrazy. Príklady dátumu, napríklad čísla alebo telefónne číslo, predstavujú voľbu medzi tuhosťou a flexibilitou. Dátum udalosti je jedným zo základných údajov, ktoré je často potrebné vložiť. Ale zadanie vstupu v určitom formáte: "dd-mm-yyyy" alebo "dm.yy" často vedie k nespokojnosti zákazníkov. Prechod z poľa na zadanie dňa do mesiaca, vykonaný klasickým formulárom HTML, sa nemôže uskutočniť, ak zadáte iba jednu číslicu a vstup do druhého môže spôsobiť ťažkosti. Napríklad v poli dňa 3 už bol zadaný a ďalšia číslica 2 nenahrádza prvú a priradí sa jej 32, čo samozrejme spôsobí nepríjemnosti.
Efektívnosť a pohodlie regulárnych výrazov v podstate závisí od celkovej konštrukcie dialógu s návštevníkom. V jednom prípade sa odporúča použiť jedno políčko na zadanie dátumu, v inom prípade je potrebné uviesť rôzne polia pre deň, mesiac a rok. Ale potom budú existovať dodatočné "náklady na kód" na kontrolu prestupného roka, počet mesiacov, počet dní v nich.
Vyhľadávanie s náhradou, pamäť regulárneho výrazu
Výmena jazyka JavaScript (regulárne výrazy) používa metódu objektu String a umožňuje vám nájsť hodnotu a okamžite ju zmeniť. To je užitočné pre opravu vstupných chýb, úpravu obsahu polí formulárov a pre konverziu údajov z jedného formátu prezentácie na iný.
Var cRegExp = / ([a-j] +) \ s ([a-j] +) \ s ([a-j] +) / i; Pri vyhľadávaní sa vytvoria tri "premenné"
Var sTest = 'tento článok je dobrý!';
Var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");
Var dTestLine = dokument.getElementById ('scTestLine');
DTestLine.innerHTML = 'Výraz "+ cRegExp +" pre reťazec "+ sTest +" bude:' + cRegRes;
výsledok:
Výraz / ([a-π] +) \ s ([a-π] +) \ s [[a-π] +) / i pre riadok "tento článok je dobrý! Získajte: článok, dobrý, tento!
Pri vykonávaní každá dvojica zátvoriek uloží výsledok do 'premennej' $ n, kde n je číslo dvojice konzol ($ 1, $ 2, ...). Na rozdiel od všeobecne akceptovanej, tu sa číslovanie premenných vykonáva s 1 a nie s 0.
Všeobecné odporúčania
Pravidelný výraz zjednodušuje kód, ale čas na jeho vývoj je často dôležitý. Môžete začať pracovať s jednoduchými konštruktmi a potom ich kombinovať do zložitejších výrazov. Môžete použiť rôzne online služby na testovanie regulárnych výrazov alebo špeciálnych lokálnych nástrojov.
Najlepšou možnosťou je vytvoriť vlastnú knižnicu regulárnych výrazov a vlastný nástroj na testovanie nového vývoja. Toto je najlepší spôsob, ako skonsolidovať skúsenosti a naučiť sa rýchlo vytvárať spoľahlivé a pohodlné vzory.
Použitie opakovania znakov a riadkov, to znamená, že špeciálne znaky '*', '+' a zátvorky označujúce počet opakovaní by mali byť riadené princípmi jednoduchosti a účelnosti. Je dôležité pochopiť, že regulárny výraz od začiatku jeho prevádzky a až do získania výsledku je úplne v moci motora použitého prehliadača. Nie všetky jazyky jazyka JavaScript sú ekvivalentné. Každý prehliadač môže priniesť vlastné osobné preferencie pri interpretácii regulárnych výrazov.
Kompatibilita sa týka nielen stránok a štýlov, ale aj regulárnych výrazov. Stránka, ktorá používa jazyk JavaScript, sa môže považovať za ladenie iba vtedy, ak úspešne pracuje na rôznych prehliadačoch.
JavaScript, String a RegExp
Správnou prácou na úrovni klienta, to znamená v prehliadači návštevníka v jazyku JavaScript, vyžaduje vysokú kvalifikáciu od vývojára. Je to pomerne dlhá doba, odkedy môžete ladiť JavaScript kód pomocou vlastných nástrojov prehliadača alebo pomocou rozšírení tretej strany, editorov kódu, nezávislých programov.
Avšak, nie všetky prípady, ladiaci zvládne a poskytujú dobrú podporu pre vývojárov, rýchle detekcia chýb, odhaľovať nedostatky. Doby, kedy počítač bol zameraný na výpočty, v dávnej minulosti. Teraz, venovať osobitnú pozornosť informovanie a vedenie objekty začali hrať významnú úlohu. Počet oceľových strún a ich skutočná povaha sa prejaví len v správny čas a na správnom mieste.
Regulárne výrazy posilniť možnosť liniek, ale vyžadujú sebaúctu. Ladenie regexp vo svojej práci, a to aj v prípade, že je možné simulovať, nie príliš zaujímavý nápad.
Pochopenie štruktúry a logiky objektu regexp, čo znamená, objekt String, syntax a sémantike JavaScript - skutočný bezpečný a spoľahlivý kód, stabilnú prevádzku každej stránky a stránky ako celku.
Similar articles
Trending Now