Rekenaars, Programmering
Javascript, gereelde uitdrukking voorbeelde, kyk Gereelde Expression
Voor die koms van hiperteks taal nie, maar eerder, totdat dit duidelik geword dat ons nie net moet kyk, maar om dit te doen onder sekere omstandighede, in 'n spesifieke plek, onder die veranderde data in die regte hoeveelhede, die gewone soek en vervang funksie gereël enige gesofistikeerde programmeerder. Skep meesterstukke van kuns soek in programmeertale, en databasis uitgeblink in die vorm van steekproefneming voorwaardes, toegerus met stored procedures, triggers en ander middele van lywige monster relasionele inligting spore. Die voorkoms van die gewone uitdrukking aan die revolusie nie lei nie, maar dit was 'n nuttige en gerieflike manier om inligting te vind en te vervang. Byvoorbeeld, gereelde uitdrukkings JavaScript e-pos aansienlik registrasie van besoekers te vereenvoudig, moenie die webwerf stuur van boodskappe aan bestaande adresse laai.
Om te sê dat 'n JavaScript gewone uitdrukking is baie beter produmannnyh rye indexOf () doen 'n beroep in die raam van konvensionele sikliese en operateurs, kan nie anders as om te sê dat dit het gemaak die script kode is kompak, maar min verstaanbaar aan die oningewydes, kan ondubbelsinnig wees.
Voorwerp regexp = + sjabloon enjin
Gereelde uitdrukkings - is 'n sjabloon + enjin. Die eerste is eintlik 'n gewone uitdrukking - JavaScript voorwerp - die regexp, die tweede - hierdie sjabloon performer, toe te pas op die lyn. Enjins wat gereelde uitdrukkings vir elke programmeertaal te implementeer is anders. En hoewel nie al verskille is beduidend, moet dit in gedagte gehou word, sowel as seker wees om noukeurig na die gewone uitdrukking voor sy operasie.
'N Spesiale notasie tydens die skryf van gereelde uitdrukkings is baie maklik om te gebruik en baie effektief, maar dit verg sorg, netheid en geduld van die ontwikkelaar. Deur notasie moet gereelde uitdrukking patrone om gewoond te raak aan. Dit is nie 'n gier, dit is die logika van 'n meganisme vir die implementering van «JavaScript gereelde uitdrukkings."
regular expression patroon
Toegelaat twee opsies:
var expOne = / ABC * / i;
var expTwo = regexp ( "ABC *", "i");
Tipies dit gebruik die eerste metode. In die tweede geval, die aanhalings, want om die karakter te gebruik '\', dit moet ontsnap deur die algemene reëls.
"Ek '- Vlag wat aandui" geval onsensitiewe ". «Global Soek" en "m" - - 'n multi-line search Jy kan ook vlae 'g' gebruik.
Die simbool '/' aan te dui algemeen om 'n sjabloon te gebruik.
Die begin en einde van die gewone uitdrukking
Die '^' definieer die karakter (s) waaruit die gewone uitdrukking begin, en die '$' bepaal watter karakter (s) moet aan die einde. Jy moet nie eksperimenteer met hulle in 'n uitdrukking, waar hulle 'n ander betekenis.
Byvoorbeeld,
var eRegExp = nuwe regexp (cRegExp, 'i');
var cRegRes = '';
var sTest = 'AbcZ';
indien (eRegExp.test (sTest)) {
cRegRes + = '- Ja;
} Else {
cRegRes + = '- Geen';
}
var dTestLine = document.getElementById ( 'scTestLine');
dTestLine.innerHTML = 'Expression /' + cRegExp + '/ vir ry "' + sTest +" '+ cRegRes.
Die element 'scTestLine' sal lei (cRegExp veranderlike 'n ooreenstemmende betekenis):
uitdrukking / ^ AbcZ $ / vir die string "abcz" - Ja
As jy die "i" vlag te verwyder, die gevolg is:
uitdrukking / ^ AbcZ $ / vir die string "abcz" - Geen
Die inhoud van 'n gewone uitdrukking
'N Gereelde uitdrukking is 'n reeks van karakters, wat die onderwerp van die search. Uitdrukking / qwerty / op soek na inskrywing is hierdie volgorde:
uitdrukking / qwerty / vir string "qwerty" - Ja
uitdrukking / qwerty / vir string "123qwerty456" - Ja
Die '^' veranderinge is uitdrukkings:
uitdrukking / ^ qwerty / vir string "123qwerty456" - Geen
uitdrukking / ^ qwerty / vir string "qwerty456" - Ja
Net so, vir die einde van die lyn simbool. Gereelde uitdrukkings toelaat vir konsekwentheid: byvoorbeeld, [az], [AZ], [0-9] - al die letters van die alfabet in hierdie geval of figure. Russiese letters kan ook gebruik word, maar moet aandag gee aan die enkodering van snare (wat gesoek wat gesoek) en bladsye. Dikwels Russiese letters, sowel as spesiale karakters, is dit beter om kodes te stel.
Wanneer die vorming van 'n gewone uitdrukking kan opsies vir die teenwoordigheid van sekere simbole in 'n bepaalde plek spesifiseer, met hulle getal is soos volg gegee: '*' = 0 herhaling of meer keer; '+' = 1 of meer herhaling tye; {1} is dieselfde, as '+'; {N} = herhaling presies n keer; {N,} = n herhaling keer of meer; {N, m} = herhaling van N na m keer.
Die gebruik van hakies, kan jy die opstel van opsies karakter te gee. Dit lyk soos volg. [ABCD] = [advertensie] = elke vier simbool: 'n "," b "," c "of" d ". Jy kan anders spesifiseer. Enige ander doel as dié in die stel karakter: [^ abcd] = enige ander doel as 'n "karakter" b "," c "of" d ". '? " Dit dui daarop dat op hierdie punt die simbool kan nie wees nie. '. " spesifiseer enige ander doel as wat die newline karakter. Hierdie "\ n", "\ r", "\ u2028" of "\ u2029". Die uitdrukking "\ s * | \ S * '=' [\ s | \ S] * 'die soeke na 'n karakter, insluitende newlines.
Vereenvoudigde weergawes van gewone uitdrukking
Die uitdrukking "[\ s | \ S] * '- soek ruimte, of die gebrek daaraan, dit is al wat op die lyn. In hierdie geval, die simbool '\ s' dui op 'n ruimte, en '\ S' - sy afwesigheid.
Net so kan jy '\ d' gebruik om te soek na die desimale syfers, en '\ D' vind 'n nie-numeriese karakter. Notasie "\ f", "r" en "\ n" stem ooreen met die vorm-voer, return en line-feed.
Die blad karakter - '\ t', vertikale - '\ v'. Die benaming "\ w 'vind 'n Latynse alfabet karakter (letters, syfers, en die onderstreping punt) = [A-Za-z0-9_].
Die benaming "\ W 'is gelykstaande aan [^ A-Za-z0-9_]. Dit beteken dat enige karakter wat nie 'n letter van die alfabet, nommer, of '_'.
Soek karakter '\ 0' = search NUL karakters. Soek onderskeidelik '\ xHH "of" \ uhhhh' = Soek karakter kode of HHHH HH. H - heksadesimale syfer.
Aanbevole bewoording en kodering van gewone uitdrukking
Enige gewone uitdrukking is belangrik om deeglik getoets op verskillende weergawes van rye.
Met die ervaring van die skep van 'n gewone uitdrukking fout kleiner sal wees, maar nogtans moet altyd in gedagte gehou word dat hul eie kennis van die reëls van die skryf van gereelde uitdrukkings nie waar kan wees nie, veral wanneer die "gewone seisoen" oorgedra word van een taal na 'n ander.
Die keuse tussen klassieke (presiese aanduiding) en 'n vereenvoudigde weergawe van 'n gewone uitdrukking, dit is beter om te verkies om die eerste. Na alles, in die klassieke is altyd duidelik aangedui dat beide gesoek. As die gewone uitdrukking of soekstring Russiese letters het, moet lei tot 'n enkele kodering al die lyne en die bladsy waarop bedryf vind JavaScript-kode voer 'n gewone uitdrukking.
Wanneer daar 'n karakter verwerking, nie-Latynse alfabet, maak dit sin om 'n aanduiding van die karakter kodes, nie die karakters hulself te oorweeg.
Wanneer die implementering van die search algoritmes in JavaScript gewone uitdrukking moet noukeurig nagegaan word. Dit is veral belangrik om die karakter enkodering te beheer.
Die hakies in die gewone uitdrukking
Die hakies definieer die opsies vir die simbool, wat moet wees of nie mag wees in 'n sekere plek, en ronde - reeks variante. Maar dit is net 'n algemene reël. Van dit is daar geen uitsondering nie, maar daar is 'n wye verskeidenheid van programme.
var cRegExp = "[az] * (png | jpg | gif).";
var eRegExp = nuwe regexp (cRegExp, 'i');
var cRegRes = '';
var sTest = 'Picture.jpg';
indien (eRegExp.test (sTest)) {
cRegRes + = '- Ja;
} Else {
cRegRes + = '- Geen';
}
resultate:
/[az]*.(png|jpg|gif)/ uitdrukking vir die lyn "Picture.jpg" - Ja
/^[ad][az]*.(png|jpg|gif)/ uitdrukking vir "Picture.jpg" lyn - Geen
/^[ad][az]*.(png|jpg|gif)/ uitdrukking vir die lyn "apicture.jpg" - Ja
/^[ad][az]*.(png|jpg|gif)/ uitdrukking vir "apicture.jg" lyn - Geen
Dit sal opgemerk word dat al, dan 'n asterisk mag teenwoordig nul tye. Dit beteken dat die "gereelde seisoen" kan werk in onverwagse maniere ten minste.
Check regexp - toets e-pos
Op 'n gereelde JavaScript uitdrukking verkry twee metodes, toets en exec, en kan gebruik word in lyne voorwerpe (String) in hul metodes (funksies): soek, verdeel, te vervang en wedstryd.
toets metode is reeds getoon, dit laat jou toe om die korrektheid van die gewone uitdrukking na te gaan. Metode Die resultaat: waar / onwaar.
Oorweeg die volgende JavaScript gereelde uitdrukkings. Check e-pos van die aantal "moeilik, maar beslis":
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}) ) $ /;
'n string var sTest ='SlavaChip@sci.by 'gee waar is, dan is daar hierdie string is die korrekte e-pos-adres. Die oudit is deur eRegExp.test (sTest).
Praktiese gebruik: behandeling van e-pos
Exec metode bied die uitset skikking, bel:
var vas 'n resultaat = eRegExp.exec (sTest);
cRegRes = '
' + aResult.length + '
';
vir (var i = 0; i
';
}
Dit gee die volgende resultaat:
9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
ongedefinieerde
sci.by
ongedefinieerde
sci.by
sci.
Ander metodes werk insgelyks. Dit word aanbeveel om hulle uit jouself te gaan. Ontwikkeling en gebruik van gereelde uitdrukkings, is dit wenslik om te werk in die praktyk is, die kode kopieer is nie altyd raadsaam hier.
Gewilde "gereelde seisoen"
JavaScript gewone uitdrukking gegee om epos nie net daar is baie meer maklik opsies. Byvoorbeeld, /^[\w-\.]+@[\w-]+\.[az]{2,3}$/i. Maar hierdie verpersoonliking in ag neem nie al belichaming van die e-posadres rekord.
Natuurlik, moet jy die ervaring van kollegas te sien, te analiseer hoe hul voorgestelde voor hul eie ontwerp op JavaScript gereelde uitdrukkings. Maar daar is 'n paar probleme. Ons moet nie vergeet dat 'n JavaScript gereelde uitdrukkings (voorbeelde van wanneer die kopiëring) die noodsaaklike karakters kan dupliseer: '\', '/' of aanhalings. Dit sal lei tot foute wat jy lank kan soek.
Dit is belangrik om in ag te neem die gewone "mens dimensie." Na formele JavaScript gewone uitdrukking vir die telefoon, wat die besoeker (persoon) kan wees, is dit gegee op verskillende maniere: 123-45-67, (29) 1234567, 80291234567 of 375291234567. En dit is alles dieselfde nommer. Spelling verskeie patrone is nie altyd aanvaarbaar, en rigiede fiksasie van die reëls vir die skryf van getalle kan onnodige ongemak of beperkings te skep. Opsie / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i is geskik vir die meeste gevalle sal jy jou telefoonnommer te keur.
As jy wil 'n JavaScript gereelde uitdrukkings, net syfers tjeks te maak, selfs so 'n eenvoudige saak vereis duidelikheid te verkry. Dit moet in ag geneem word 'n heelgetal of fraksionele, wetenskaplike notasie, of normale, positief of negatief getal. Jy kan ook rekening hou met die bestaan van die geldeenheid simbool, die nommer van syfers na die desimale punt en die verdeling van die hele gedeelte van die nommer op die drietal.
Uitdrukking / ^ \ d + $ / Ek is so net getalle en /^\d+\.\d+$/i uitdrukking laat die gebruik van 'n punt om die breukdeel van die getal aan te dui.
In JavaScript nagaan gereelde uitdrukkings kan gebruik word om die formaat van die harde insette data, wat belangrik is, veral aandui wanneer jy profiele, paspoort data, en wetlike adresse t. D.
Gaan die datums - maklik om die komplekse
Oorweeg 'n ander JavaScript gereelde uitdrukkings. Voorbeelde tot op hede, as vir die aantal telefoonnommers verteenwoordig keuse tussen rigiditeit en buigsaamheid. Datum van gebeurtenis - een van die belangrikste data, wat dikwels moet toegedien word. Maar vaststelling van die insette in 'n spesifieke formaat: "dd-mm-yyyy 'of' d.m.gg 'lei dikwels tot die kliënt ontevredenheid. Die oorgang van die invoer veld van die dag-tot-maand, vol klassieke HTML-vorm, kan nie plaasvind as jy net een syfer te voer, en die tweede insette kan moeilik wees. Byvoorbeeld, in die gebied van die dag dit is ingestel 3 en die volgende nommer 2 vervang nie die eerste, en word toegeskryf aan haar 32, wat, natuurlik, sal ongerief veroorsaak.
Doeltreffendheid en gerief van 'n gereelde uitdrukkings in wese afhanklik van die algemene bou van 'n dialoog met die besoeker. In een geval, die datum aandui is dit raadsaam om 'n invoer veld gebruik van die vorm, in die ander geval is dit nodig om voorsiening te maak vir die verskillende velde vir dag, maand en jaar. Maar dan enige addisionele "koste van kode" om die skrikkeljaar kyk, die aantal maande, die aantal dae in hulle.
Soek en vervang, gereelde uitdrukking geheue
JavaScript vervang (gereelde uitdrukkings) met behulp van die metode van die String voorwerp, en ons in staat stel om die waarde te vind en verander dit onmiddellik. Dit is nuttig vir die regstelling van tikfoute, die inhoud van die vorm velde wysig en vir die omskakeling van data van een aanbieding formaat na 'n ander.
var cRegExp = / ([a-z] +) \ s ([a-z] +) \ s ([a-z] +) / i; // wanneer jy soek is drie "veranderlikes"
var sTest = 'hierdie artikel is goed! ";
var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");
var dTestLine = document.getElementById ( 'scTestLine');
dTestLine.innerHTML = 'uitdrukking' + cRegExp + 'vir die string "+ sTest +" draai: "+ cRegRes;
gevolg:
uitdrukking / ([az] +) \ s ([az] +) \ s ([az] +) / i vir die lyn "hierdie artikel is goed!" uit: die artikel is goed, dié!
By die uitvoering van elke paar hakies slaan die resultaat in die "veranderlike" $ n, waar n - aantal bracket pare ($ 1, $ 2, ...). In teenstelling met konvensionele, hier veranderlike nommers is 1, nie 0.
algemene aanbevelings
Gereelde uitdrukking vereenvoudig die kode nie, maar die tyd om te ontwikkel dit dikwels 'n verskil maak. Jy kan begin met 'n eenvoudige ontwerpe en dan gemaak om te kombineer in meer komplekse uitdrukkings. Jy kan gebruik verskeie aanlyn-dienste om gereelde uitdrukkings of spesiale plaaslike tools toets.
Die beste opsie sal hul eie biblioteek van gereelde uitdrukkings en hul eie gereedskap om nuwe ontwikkelings te toets skep. Dit is die beste manier om die ervaring te konsolideer en om te leer hoe om betroubare en gemaklike ontwerp vinnig te bou.
Die gebruik van herhaling van karakters en stringe, dit is, 'n spesiale karakters '*', '+' en draadjies, wat dui op die aantal herhalings moet gelei word deur die beginsels van eenvoud en opportunisme. Dit is belangrik om te besef dat 'n gewone uitdrukking aan die begin van sy werk, en om te kry die resultaat is heeltemal in die mag van die enjin wat gebruik word deur die leser. Nie alle tale is gelyk aan JavaScript. Elke leser kan hulle bring persoonlike voorkeure in die interpretasie van 'n gereelde uitdrukkings.
Verenigbaarheid is nie net bladsye en style sheets, gereelde uitdrukkings, dit het ook te doen. Die bladsy gebruik JavaScript, kan beskou word as 'n goed funksionerende slegs wanneer dit suksesvol gewerk het op 'n verskeidenheid van blaaiers.
JavaScript, String en regexp
Deur die regte werk op die kliënt vlak, dit wil sê in die leser die besoeker se in JavaScript, dit vereis 'n hoë vaardighede van die ontwikkelaar. Lank genoeg jy het die geleentheid om te ontfout JavaScript-kode se eie fondse of met die hulp van derde party uitbreidings,-kode redakteurs, onafhanklike programme leser.
Maar nie alle gevalle, kan die debugger hanteer en bied goeie ondersteuning vir die ontwikkelaar, 'n vinnige fout opsporing, op te spoor knelpunte. Die tye wanneer die rekenaar is gefokus op die berekeninge, in die verre verlede. Nou, met spesiale aandag aan inligting en lyn voorwerpe het gekom om 'n belangrike rol speel. Die aantal staal snare, en hul ware aard hulle openbaar net op die regte tyd en regte plek.
Gereelde uitdrukkings te versterk die moontlikheid van lyne, maar vereis selfrespek. Debug regexp in sy werk, selfs al is dit moontlik om na te boots, nie te interessante idee.
Begrip van die struktuur en logika van die regexp item, wat beteken voorwerp String, die sintaksis en semantiek van JavaScript - 'n ware veilige kode, die bestendige werking van elke bladsy en die werf as 'n geheel.
Similar articles
Trending Now