KompjûtersProgramming

Javascript, reguliere útdrukking foarbylden, kontrolearje Regular Expression

Foardat de komst fan 'e taal fan hypertext, mar leaver, oant it waard dúdlik dat wy moatte net allinnich sjen, mar om dat te dwaan ûnder bepaalde betingsten, yn in bepaald plak, ûnder de wizige data yn de rjochter hoeveelheden, normale funksjes fan sykjen en ferfangen regelen alle ferfine programmeur. Meitsje topstikken fan keunst sykje yn de programmearring talen, en databank útblonk yn 'e struktuer fan' e sampling omstannichheden, útrist mei opslein prosedueres, aktivearret en oare middels fan grut sample relational ynformaasje tracks. It uterlik fan de reguliere ekspresje foar de revolúsje net liede, mar it wie in nuttich en handige wize te finen en ferfange ynformaasje. Bygelyks, reguliere útdrukkings JavaSkript email gâns simplify registraasje fan de besikers, net lade de webside stjoeren fan berjochten nei nonexistent adressen.

Te sizzen dat in JavaSkript reguliere ekspresje is folle better produmannnyh sekwinsjes indexOf () ropt yn 'e râne fan konvinsjonele Cyclische en operators, kin net mar sizze dat it hat makke de scriptkoade is kompakt, mar bytsje begripen oan' e uninitiated, kin wêze unambiguously.

Objekt gewoane ekspresje = + sjabloan motor

Reguliere ekspresjes - is in sjabloan + motor. De earste is eins in reguliere ekspresje - JavaScript foarwerp - de gewoane ekspresje, it twadde - in patroan performer, jilde it oan de line. Motoren dy't útfieren reguliere útdrukkings foar elke programmeartaal binne oars. En hoewol't net alle ferskillen binne wichtige, dan moatte droegen wurde foar eagen, en ek wêze wis om foarsichtich kontrolearje de reguliere ekspresje foarôfgeand oan syn operaasje.

In spesjale notaasje as it skriuwen reguliere ekspresjes is hiel maklik om te brûken en hiel effektyf, mar it freget om soarch, neatness en geduld fan de projektûntwikkelder. By muzyknotaasje reguliere ekspresje patroanen moatte wenne oan. Dit is net in moadeferskynsel, it is de logika fan in meganisme foar de útfiering «JavaSkript reguliere útdrukkings."

reguliere ekspresje pattern

Tastien twa opsjes:

var expOne = / abc * / i;

var expTwo = gewoane ekspresje ( "abc *", "i");

Kenmerkend is it brûkt de earste metoade. Yn it twadde gefal, de sitaten, omdat te brûken it teken '\', dan moat ûntkaam troch de algemiene regels.

'I - flagge tsjut op "case insensitive". Jo kinne ek brûke flaggen 'g' - «Global Search 'en' m '- in multi-line sykjen.

It symboal '/' oan te jaan mienskiplik te brûken in sjabloan.

It begjin en de ein fan de reguliere ekspresje

De '^' definiearret it personaazje (s) fan dy te begjinnen mei de reguliere útdrukking en de '$' stelt fêst hokker personaazje (s) moat wêze oan 'e ein. Jo moatte net eksperimintearje mei harren binnen in útdrukking, dêr't se hawwe in oare betsjutting.

Bygelyks,

var eRegExp = nij gewoane ekspresje (cRegExp, 'i');

var cRegRes = '';

var sTest = 'AbcZ';

as (eRegExp.test (sTest)) {

cRegRes + = '- Ja';

} Else {

cRegRes + = '- Gjin';

}

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

dTestLine.innerHTML = 'Expression /' + cRegExp + '/ foar rige' '+ sTest +' '' + cRegRes.

It elemint 'scTestLine' sil útrinne (cRegExp fariabele hat korrespondearjend betsjutting):

ekspresje / ^ AbcZ $ / foar de tekenrige "abcz" - Ja

As jo fuortsmite de 'i' flagge, it resultaat is:

ekspresje / ^ AbcZ $ / foar de tekenrige "abcz" - Gjin

De ynhâld fan in reguliere ekspresje

In reguliere ekspresje is in opienfolging fan karakters, dat is it ûnderwerp fan it sykjen. Ekspresje / azerty / op syk nei ynfier is dit sekwinsje:

ekspresje / azerty / foar string "azerty" - Ja

ekspresje / azerty / foar string "123qwerty456" - Ja

De '^' feroarings binne uteringen:

ekspresje / ^ azerty / foar string "123qwerty456" - Gjin

ekspresje / ^ azerty / foar string "qwerty456" - Ja

Sa ek foar de ein fan de regel symboal. Reguliere ekspresjes tastean foar gearhing: bygelyks, [AZ], [AZ], [0-9] - alle letters fan it alfabet yn dit gefal of sifers. Russian letters ek kinne brûkt wurde, mar moat betelje omtinken oan de kodearring fan snaren (dêr't wurdt socht dy't socht wurdt) en siden. Faak Russyske letters, likegoed as spesjale tekens, is it de foarkar boppe set koades.

Wannear't dy't in reguliere ekspresje kin oantsjutte opsjes foar de oanwêzigens fan bepaalde symboalen yn in bepaalde lokaasje, mei harren nûmer jûn as folget: '*' = 0 werhelling of mear kearen; '+' = 1 of mear werhelling kearen; {1} is itselde, as '+'; {N} = werhelling krekt n tiden; {N,} = n werhelling kear of mear; {N, m} = werhelling fan 'n oan m kear.

Mei help fan heakjes, kinne jo oanjaan it karakter set fan opsjes. It sjocht der sa út. [Abcd] = [ad] = alle fjouwer symboal: 'a', 'b', 'c' of 'd'. Jo kinne opjaan oars. Eltse karakter oars as dy oantsjutte yn 'e set: [^ ABCD] = eltse karakter oars as' a ',' b ',' c 'of' d '. '?' It jout oan dat der op dit punt it symboal kin net wêze. '.' spesifisearret eltse karakter oars as oanjout de oare rigel. Dat '\ n', '\ r', '\ u2028' of '\ u2029'. De útdrukking '\ s * | \ S *' = '[\ s | \ S] *' betsjut it sykjen nei eltse personaazje, ynklusyf newlines.

Ferienfâldige ferzjes fan reguliere ekspresje

De útdrukking '[\ s | \ S] *' - sykje romte, of ûntbrekken dêrfan, dat is alles dat der op 'e line. Yn dit gefal, it symboal '\ S' wiist op in romte, en '\ S' - syn ôfwêzigens.

Ek kinne jo gebrûk meitsje fan '\ d' te sykjen foar de desimale sifers, en '\ D' fine in net-numerike karakter. Muzyknotaasje '\ f', 'r' en '\ n' oerien mei de foarm-feed, carriage return en line-feed.

De tab karakter - '\ t', vertical - '\ v'. De beneaming '\ w' fynt gjin Latynske alfabet karakter (brieven, sifers, en de underscore Mark) = [A-Za-z0-9_].

De beneaming '\ W' is gelyk oan [^ A-Za-z0-9_]. Dat betsjut eltse karakter dat net in brief fan it alfabet, oantal, of '_'.

Search character '\ 0' = sykje Nul karakters. Sykje '\ xHH' of '\ uHHHH' = sykje karakter koade of HHHH HH resp. H - hexadecimal sifer.

Empfohlener formulearring en taalkodearjen fan reguliere ekspresje

Any reguliere ekspresje is wichtich om soarchfâldich teste op ferskillende ferzjes fan rigen.

Mei de erfaring fan it meitsjen fan in reguliere ekspresje flater sil lytser, mar dochs moatte altyd wurde hâlden yn gedachten dat harren eigen kennis fan 'e regels fan it skriuwen reguliere ekspresjes kinne net wier, foaral as it "gewoane seizoen" wurdt oerdroegen fan de iene nei de oare taal.

Kieze tusken klassiker (krekte oantsjutting) en in ferienfâldige ferzje fan in reguliere ekspresje, it is better om leaver de earste. Ommers, yn de klassiken is altyd dúdlik oanjûn dat beide socht. As de reguliere ekspresje of sykterm hawwe Russyske brieven, moat liede ta ien kodear alle linen en de side dêr't eksploitearret fine JavaSkript-koade docht in reguliere ekspresje.

Wannear't der in karakter ferwurkjen, net-Latynske alfabet, it makket sin te beskôgje in yndikaasje fan it karakter koades, net de personaazjes sels.

As útfiering fan it sykjen Algorithmen yn JavaSkriptName reguliere útdrukking moat wurde foarsichtich kontrolearre. It is benammen fan belang om it karakter kodearring.

De heakjes yn 'e reguliere ekspresje

De brackets beskiede hokker mooglikheden foar it symboal, dat moat wêze of is mooglik net yn in bepaald plak, en rûne - sequence farianten. Mar dit is mar in algemiene regel. Fan it der is gjin útsûndering, mar der is in grut ferskaat fan de oanfragen.

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

var eRegExp = nij gewoane ekspresje (cRegExp, 'i');

var cRegRes = '';

var sTest = 'picture.jpg';

as (eRegExp.test (sTest)) {

cRegRes + = '- Ja';

} Else {

cRegRes + = '- Gjin';

}

results:

/[az]*.(png|jpg|gif)/ útdrukking foar de rigel "picture.jpg" - Ja

/^[ad][az]*.(png|jpg|gif)/ útdrukking foar "picture.jpg" line - Gjin

/^[ad][az]*.(png|jpg|gif)/ útdrukking foar de rigel "apicture.jpg" - Ja

/^[ad][az]*.(png|jpg|gif)/ útdrukking foar "apicture.jg" line - Gjin

Dêrby moat opmurken wurde dat alles, dan in stjerke kin wêze oanwêzich nul kear. Dat betsjut dat de "gewoane seizoen" soe wurkje yn ûnferwachte wizen op syn minst.

Kontrolearje gewoane ekspresje - testen email

By gewoane JavaSkript útdrukking helle twa metoaden, test en exec, en kin brûkt wurde yn rigels foarwerpen (String) yn harren metoades (funksjes): sykje, split, ferfange en wedstriid.

test metoade is al oantoand, dan kinne jo te kontrolearjen it correctness fan it reguliere ekspresje. Metoade Resultaat: wier / net wier.

Tink oan de folgjende JavaScript reguliere útdrukkings. Kontrolearje post fan it tal "dreech, mar grif":

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}) ) $ /;

in string var sTest ='SlavaChip@sci.by 'jout wier, dan is der dit tekenrige is de goede email-adres. De kontrôle waard útfierd troch eRegExp.test (sTest).

Praktyske gebrûk: behanneling fan e-post

Exec metoade biedt de útgong array, skilje:

var aResult = eRegExp.exec (sTest);

cRegRes = '
' + aResult.length + '
';
foar (var i = 0; i cRegRes + = aResult [i] + '
';
}

It jout it folgjende resultaat:

9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
undefined
sci.by
undefined
sci.by
Sci.

Oare metoaden wurkje similarly. It is oan te rieden om te kontrolearje se út sels. Ûntwikkeling en gebrûk fan reguliere ekspresjes, is it winsklik om te wurkjen yn de praktyk, de koade kopiearjen is net altyd oan te rieden hjir.

Populêre "gewoane seizoen"

JavaSkript reguliere ekspresje jûn om e-mail net allinne binne der folle mear maklik opsjes. Bygelyks, /^[\w-\.]+@[\w-]+\.[az]{2,3}$/i. Lykwols, dizze útfiering wurdt rekken hâlden mei net alle embodiments fan it e-postadres rekord.

Fansels, jo moatte de ûnderfining fan kollega, te analysearje hoe't har foarsteld foar't te ûntwerpen harren eigen op JavaScript reguliere útdrukkings. Mar der binne wat swierrichheden. Wy moatte net ferjitte dat in JavaSkript reguliere ekspresjes (foarbylden fan doe kopiearjen) kin duplicate 'e essinsjele tekens:' \ ',' / 'of quotes. Dat sil liede ta fersin, dêr't kinne jo sykje lang.

It is wichtich om te rekken hâlden mei de wenstige 'minsklike mjitte. " Nei formeel JavaScript reguliere ekspresje foar de telefoan, dat kin de besiker (persoan), it wurdt jûn yn ferskate wizen: 123-45-67, (29) 1234567, 80291234567 of 375291234567. En it is allegear itselde nûmer. Stavering meardere patroanen is net altyd akseptearre, en stive fixatie fan de regels foar it skriuwen nûmers meie meitsje oerstallige ongemak of beheinings. Opsje / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i is geskikt foar de measte gefallen jo kontrolearje jo telefoannûmer.

As jo wolle meitsje in JavaSkript reguliere ekspresjes, allinnich sifers kontrôles, sels sa'n ienfâldige gefal freget om opheldering. It moat wurde beskôge in hiel getal of fraksjonele, wittenskiplike notaasje, of normale, posityf of negatyf nûmer. Jo kinne ek rekken hâlde mei it bestean fan it falutasymboal symboal, it oantal sifers efter it desimaal punt en de ferdieling fan 'e hiele diel fan it getal op it Triad.

Ekspresje / ^ \ d + $ / i kontrolearje allinnich sifers en /^\d+\.\d+$/i útdrukking lit it brûken fan in punt oan te jaan de fraksjonele diel fan it getal.

Yn JavaScript kontrolearjen reguliere ekspresjes kinne brûkt wurde om oan te jaan fan de opmaak fan it hurde ynput gegevens, dat is wichtich, fral by it ynfieren profylen, paspoart gegevens, en juridyske adressen t. D.

Kontrolearje de datums - simpel ta it kompleks

Betink in oare JavaSkript reguliere útdrukkings. Foarbylden to date, lykas foar it tal telefoanyske nûmers fertsjintwurdigje kar tusken rigidity en fleksibiliteit. Datum fan barren - ien fan de essinsjele gegevens, dy't faak te wurde tatsjinne. Mar fixing de yngong yn in spesifike opmaak: "dd-mm-jjjj 'of' d.m.gg 'faak liedt ta klant ûnfrede. De oergong fan de ynfier fjild fan 'e dei-to-moanne, fol fan klassike HTML-foarm, kin net plakfine as jo ynfiere mar ien sifer, en de twadde ynput kin wêze dreech. Bygelyks op it mêd fan de dei waard yntrodusearre 3 en it folgjende nûmer 2 hat net yn it plak fan de earste, en wurdt taskreaun oan har 32, dat, fansels, sille feroarsaakje oerlêst.

Effisjinsje en gemak fan reguliere ekspresjes yn wêzen ôfhingje fan de algemiene bou fan in dialooch mei de besiker. Yn ien gefal, om oan te jaan de datum is it oan te rieden in ynfier fjild fan de foarm, yn de oare gefallen is it nedich om te foarsjen foar de ferskate fjilden foar de dei, moanne en it jier. Mar dan gjin ekstra "kosten fan de koade" om kontrolearje it skrikkeljier, it oantal moannen, it oantal dagen werom yn harren.

Sykje en ferfange, reguliere ekspresje ûnthâld

JavaSkript ferfange (reguliere útdrukkings) mei help fan de metoade fan it String foarwerp, en stean ús te finen de wearde en feroarje it fuortendaliks. Dit is brûkber foar korrizjearje typen flaters, bewurkjen de ynhâld fan it formulier fjilden en foar it konvertearjen fan gegevens fan ien presintaasje Format nei in oare.

var cRegExp = / ([a-z] +) \ s ([a-z] +) \ s ([a-z] +) / i; // By it sykjen binne trije 'fariabelen'

var sTest = 'Dit artikel is goed!';
var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");

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

dTestLine.innerHTML = 'expression' + cRegExp + 'foar it tried "' + sTest + '' turn: '+ cRegRes;

resultaat:

expression / ([az] +) \ s ([az] +) \ s ([az] +) / i foar de rigel "dit artikel is goed!" out: it artikel is goed, dit!

As performing elke pear heakjes slacht it resultaat yn de 'fariabele' $ n, dêr't n - oantal bracket pearen ($ 1, $ 2, ...). Oars as konvinsjonele, hjir variable nûmering is 1, net 0.

Algemiene oanrikkemedaasjes

Reguliere ekspresje simplifies de koade, mar de tiid om te ûntwikkeljen dat faak makket in ferskil. Jo kinne begjinne mei ienfâldige ûntwerpen en doe makke te kombinearjen yn komplekser uteringen. Jo kinne gebrûk meitsje fan ferskate online tsjinsten te testen reguliere útdrukkings of bysûndere lokale ark.

De bêste opsje sil meitsje harren eigen bibleteek fan reguliere útdrukkings en harren eigen ark te testen nije ûntwikkelings. Dat is de bêste manier om te konsolidearjen de ûnderfining en om te learen hoe om fluch bouwen betrouber en noflik design.

Mei help fan werhelling fan tekens en snaren, dat is, spesjale karakters '*', '+' en beugels, wat oanjout it oantal werhellings moatte wurde liede troch de begjinsels fan ienfâld en tûkens. It is wichtich om te realisearje dat in reguliere ekspresje oan it begjin fan syn wurk, en om it resultaat stiet hielendal yn 'e macht fan' e motor brûkt yn 'e browser. Net alle talen wurde lykweardich oan JavaScript. Eltse browser meie bringe harren persoanlike foarkar yn de útlis fan de reguliere ekspresjes.

Komptabiliteit is net allinnich siden en styl lekkens, ta reguliere útdrukkings, soks hat ek te dwaan. De side brûkt JavaSkript, kin beskôge in goed funksjonearjende allinne as it hat mei súkses wurke oan in ferskaat oan browsers.

JavaSkript, tekenrigen en gewoane ekspresje

Tsjin de rjochter baan by de kliïnt nivo, dat is, yn 'e besiker syn blêder yn JavaSkriptName, it fereasket hege feardichheden fan de projektûntwikkelder. Lang genôch Jo hawwe de mooglikheid om Debug JavaSkript-koade blêder eigen middels of mei help fan tredde partijen oansette, code redakteuren, ûnôfhinklike programma.

Lykwols, net alle gefallen, de debugger kin omgean en soargje foar goede stipe foar de ûntwikkelders, in flugge fout opspoaren, detect knipepunten. De tiden doe't de kompjûter is rjochte op de berekkenings, yn it fiere ferline. No, betelje spesjaal omtinken foar ynformaasje en line foarwerpen binne kommen om spylje in wichtige rol. It oantal stielen snaren, en harren wiere aard se kommen troch allinnich by de rjochter tiid en rjochts plak.

Reguliere ekspresjes fersterkje de mooglikheid fan linen, mar easkje sels respekt. Utbrekke gewoane ekspresje yn syn wurk, sels as it mooglik is te simulate, net al te nijsgjirrich idee.

Ynsjoch yn de struktuer en de logika fan de gewoane ekspresje yn foarwerp, betsjut object String, de syntaksis en de semantyk fan JavaSkript - een echte feilich en feilige koade, de stâl wurking fan elke side en de side as gehiel.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 fy.delachieve.com. Theme powered by WordPress.