Datamaskiner, Programmering
Javascript, regulære uttrykk eksempler, sjekk Regular Expression
Før ankomsten av hypertekst språk, men heller, før det ble klart at vi ikke skal bare se, men å gjøre det under visse betingelser, på et bestemt sted, under endrede data i riktige mengder, vanlig søk og erstatt-funksjonen organisert noe sofistikert programmerer. Lag mesterverk av kunst søk i programmeringsspråk og database utmerket seg i form av prøveforhold, utstyrt med lagrede prosedyrer, triggere og andre former for klumpete prøverelasjonsinformasjonssporene. Utseendet av det regulære uttrykket til revolusjonen førte ikke, men det var en nyttig og praktisk måte å finne og erstatte informasjon. For eksempel, regulære uttrykk Java epost betydelig forenkler registrering av besøkende, må du ikke legge nettstedet sender meldinger til ikke-eksisterende adresser.
For å si at en Javascript regulært uttrykk er mye bedre produmannnyh sekvenser indexOf () ringer i rammen av konvensjonell syklisk og operatører kan ikke men si at det har gjort skriptet koden er kompakt, men lite forståelig for den uerfarne, kan være utvetydig.
Objekt RegExp = + mal motor
Regulære uttrykk - er en mal + motor. Den første er faktisk et vanlig uttrykk - Javascript objekt - den RegExp, den andre - denne malen utøver, bruke den til linjen. Motorer som implementerer regulære uttrykk for hver programmeringsspråk er forskjellige. Og selv om ikke alle forskjellene er store, bør det tas i betraktning, så vel som bør du sjekke nøye det regulære uttrykket før sin drift.
En spesiell notasjon når du skriver regulære uttrykk er ganske lett å bruke og ganske effektiv, men det krever omsorg, ryddighet og tålmodighet fra utbygger. Ved notasjon vanlig uttrykk mønstre trenger å bli vant til. Dette er ikke en kjepphest, det er logikken i en mekanisme for å implementere «Javascript regulære uttrykk."
regulær uttrykksmønster
Tillatt to alternativer:
Var expOne = / abc * / i;
Var expTwo = RegExp ( "ABC *", "i");
Vanligvis er det anvendt den første metoden. I det andre tilfellet, sitater, fordi å bruke tegnet '\', det må være rømt fra de generelle reglene.
«Jeg - flagg som indikerer "små bokstaver". Du kan også bruke flagg g '- «Globalt søk' og 'm' - en multi-line søk.
Symbolet '/' for å indikere vanlig å bruke en mal.
Begynnelsen og slutten av det vanlige uttrykket
Den '^' definerer tegnet (e) for å starte den vanlige uttrykk, og '$' bestemmer hvilket tegn (e) må være på slutten. Du bør ikke eksperimentere med dem inne i et uttrykk, der de har en annen mening.
For eksempel,
Var eRegExp = new RegExp (cRegExp, 'i');
Var cRegRes = '';
Var sTest = 'AbcZ';
if (eRegExp.test (sTest)) {
cRegRes + = '- Ja';
} Else {
cRegRes + = '- No';
}
Var dTestLine = document.getElementById ( 'scTestLine');
dTestLine.innerHTML = 'ekspresjons /' + cRegExp + '/ for rad "' + sTest + '"' + cRegRes.
Elementet 'scTestLine' vil resultere (cRegExp variabel har en tilsvarende betydning):
uttrykk / ^ AbcZ $ / etter strengen "abcz" - Ja
Hvis du fjerner 'i' flagg, er resultatet:
uttrykk / ^ AbcZ $ / etter strengen "abcz" - Nei
Innholdet i et regulært uttrykk
Et regulært uttrykk er en sekvens av tegn, som er gjenstand for søket. Expression / qwerty / etter innreise er denne sekvensen:
Uttrykket / QWERTY / for string "QWERTY" - Ja
Uttrykket / QWERTY / for string "123qwerty456" - Ja
De '^' endringene er uttrykk:
Uttrykket / ^ QWERTY / for string "123qwerty456" - Nei
Uttrykket / ^ QWERTY / for string "qwerty456" - Ja
På lignende måte, for slutten av linjen symbol. Regulære uttrykk tillater konsistens, for eksempel [a], [AZ], [0-9] - alle bokstavene i alfabetet i denne saken eller tall. Russiske bokstaver også kan brukes, men bør ta hensyn til koding av strenger (som søkes det er søkt) og sider. Ofte russiske bokstaver, samt spesialtegn, er det best å sette koder.
Ved forming av et regulært uttrykk kan angi valg med hensyn til nærvær av visse symboler på et bestemt sted, med sitt nummer gitt som følger: '*' = 0 repetisjon eller flere ganger; '+' = 1 eller flere repetisjonstider; {1} er den samme, som '+'; {N} = gjentagelse nøyaktig n ganger; {N,} = N repetisjonstider eller mer; {N, m} = repetisjon fra n til m ganger.
Ved hjelp av braketter, kan du angi tegnsettet av alternativer. Det ser ut som dette. [Abcd] = [ad] = hver fire symbol: 'a', 'b', 'c' og 'd'. Du kan angi noe annet. Alle tegn annet enn de som er spesifisert i settet: [^ abcd] = et hvilket som helst annet enn 'a' karakter, 'b', 'c' og 'd'. '?' Det indikerer at på dette punktet symbolet ikke kan være. '' angir noe annet formål enn som angir linjeskift. Denne '\ n', '\ r', '\ u2028' eller '\ u2029'. Uttrykket '\ s * | \ S *' = '[\ s | \ S] *' betyr letingen etter alle tegn, inkludert linjeskift.
Forenklede versjoner av regulære uttrykk
Uttrykket '[\ s | \ S] *' - søk plass, eller mangelen på dem, er at alt som er på linjen. I dette tilfellet symbolet '\ s' indikerer en plass, og '\ S' - hans fravær.
På samme måte kan du bruke '\ d' for å søke etter de desimalar, og '\ D' finne en ikke-numerisk karakter. Notasjon '\ f', 'r' og '\ n' tilsvarer på mate, vognretur og linjemating.
Tabulatortegnet - '\ t', vertikal - '\ v'. Betegnelsen '\ w' finner noen latinske alfabetet tegn (bokstaver, tall og understrek merket) = [A-Za-z0-9_].
Betegnelsen '\ W' er lik [^ A-Za-z0-9_]. Dette betyr alle tegn som ikke er en bokstav i alfabetet, tall, eller '_'.
Søk tegnet '\ 0' = søke NUL tegn. Søk eller '\ uhhhh' henholdsvis '\ xHH' = Søk tegnkode eller HHHH HH. H - heksadesimale siffer.
Anbefalt ordlyden og koding av regulære uttrykk
Noen vanlige uttrykk er viktig å nøye testet på ulike versjoner av rader.
Med opplevelsen av å skape et vanlig uttrykk feilen vil bli mindre, men likevel bør alltid være oppmerksom på at deres egen kunnskap om reglene for skriving regulære uttrykk ikke kan være sant, spesielt når den "vanlige sesongen" overføres fra ett språk til et annet.
Velge mellom klassisk (eksakt angivelse), og en forenklet versjon av et regulært uttrykk, er det bedre å foretrekke den første. Tross alt, i klassikerne er alltid tydelig indikerte at begge søkt. Hvis det regulære uttrykket eller søkestrengen har russiske bokstaver, bør føre til en enkelt koder alle linjene og den siden som opererer finne Javascript-koden utfører et regulært uttrykk.
Når det er et tegn behandling, ikke-latinske alfabetet, er det fornuftig å vurdere en indikasjon på tegnkoder, ikke karakterene selv.
Ved implementering av søkealgoritmer i Java vanlig uttrykk bør være nøye kontrollert. Det er spesielt viktig å kontrollere tegnkoding.
Parentesene i det vanlige uttrykket
Brakettene definerer alternativene for symbol, som må være eller ikke kan være på et bestemt sted, og rund - sekvensvarianter. Men dette er bare en generell regel. Fra det der er ikke noe unntak, men det er et bredt spekter av applikasjoner.
Var cRegExp = "[a] * (png | jpg | gif).";
Var eRegExp = new RegExp (cRegExp, 'i');
Var cRegRes = '';
Var sTest = 'picture.jpg';
if (eRegExp.test (sTest)) {
cRegRes + = '- Ja';
} Else {
cRegRes + = '- No';
}
resultater:
/[az]*.(png|jpg|gif)/ uttrykk for linjen "picture.jpg" - Ja
/^[ad][az]*.(png|jpg|gif)/ uttrykk for "picture.jpg" line - Nei
/^[ad][az]*.(png|jpg|gif)/ uttrykk for linjen "apicture.jpg" - Ja
/^[ad][az]*.(png|jpg|gif)/ uttrykk for "apicture.jg" line - Nei
Det bør bemerkes at alle, så en stjerne kan være til stede null ganger. Dette betyr at den "ordinære sesongen" kan fungere på uventede måter minst.
Sjekk RegExp - testing epost
Ved vanlige Java uttrykk oppnådd to metoder, test og kjørbart, og kan brukes i linjer objekter (String) i deres metoder (funksjoner): søk, split, erstatte og kamp.
Testmetoden har allerede blitt demonstrert, det tillater deg å kontrollere riktigheten av det regulære uttrykket. Metode Resultat: sant / usant.
Vurder følgende Javascript regulære uttrykk. Sjekk e-post fra antall "vanskelig, men absolutt":
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}) ) $ /;
en streng Var sTest ='SlavaChip@sci.by 'gir sant, så er det denne strengen riktig e-postadressen. Tilsynet ble gjennomført ved eRegExp.test (sTest).
Praktisk bruk: Behandling av e-post
Kjørbart metode tilveiebringer utgangs matrise, ring:
Var aresult = eRegExp.exec (sTest);
cRegRes = '
' + aResult.length + '
';
for (var i = 0; i
';
}
Det gir følgende resultat:
9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
udefinert
sci.by
udefinert
sci.by
sci.
Andre metoder fungerer på samme måte. Det anbefales å sjekke dem ut selv. Utvikling og bruk av regulære uttrykk, er det ønskelig å fungere i praksis, er koden kopiering ikke alltid lurt her.
Populære "ordinære sesongen"
Javascript regulære uttrykk gitt til e-posten ikke bare det er mange flere enkle alternativer. For eksempel, /^[\w-\.]+@[\w-]+\.[az]{2,3}$/i. Men tar denne utførelsen hensyn ikke alle utførelser av e-postadressen posten.
Selvfølgelig må du vise opplevelsen av kolleger, for å analysere hvordan deres foreslått før å designe sine egne på Javascript regulære uttrykk. Men det er noen problemer. Vi bør ikke glemme at en Javascript regulære uttrykk (eksempler på når du kopierer) kan kopiere viktige tegn: '\', '/' eller anførselstegn. Dette vil føre til feil, som du kan søke lenge.
Det er viktig å ta hensyn til den vanlige "menneskelige dimensjon." Etter formell Javascript vanlig uttrykk for telefonen, som kan være den besøkende (person), er det gitt på ulike måter: 123-45-67, (29) 1234567, 80291234567 eller 375 291 234 567. Og det er det samme nummeret. Stavekontroll flere mønstre er ikke alltid akseptabelt, og rigid fiksering av reglene for å skrive tall kan skape unødig ubehag eller restriksjoner. Alternativ / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i er egnet for de fleste tilfeller du sjekker telefonnummeret ditt.
Hvis du ønsker å lage en javascript regulære uttrykk, bare sifre sjekker, krever enda en så enkel sak avklaring. Det skal betraktes et helt tall eller en brøk, vitenskapelig notasjon, eller normal, positivt eller negativt tall. Du kan også ta hensyn til eksistensen av valutasymbolet, antall sifre etter komma og delingen av hele delen av tallet på triaden.
Ekspresjon / ^ \ d + $ / i sjekk bare tall og /^\d+\.\d+$/i ekspresjon tillater bruk av et punkt for å indikere den fraksjonelle del av nummeret.
I Javascript sjekke regulære uttrykk kan brukes til å indikere format på hardinngangsdata, noe som er viktig, spesielt når du taster inn profiler, pass data og juridiske adresser t. D.
Sjekk datoene - enkle til det komplekse
Vurdere en annen Javascript regulære uttrykk. Eksemplene til dato, som for antallet telefonnumre representere valg mellom stivhet og fleksibilitet. Dato for arrangementet - en av de grunnleggende data, som ofte har som skal administreres. Men fikse innspill i et bestemt format: "dd-mm-åååå 'eller' d.m.gg 'ofte fører til utilfredse kunder. Overgangen fra inntastingsfeltet for dag-til-måned, full av klassiske HTML-form, ikke kan skje når du går inn bare ett siffer, og andre innspill kan være vanskelig. For eksempel, i feltet av dagen ble det innført tre og neste nummer to erstatter ikke den første, og er knyttet til hennes 32, noe som selvfølgelig vil føre til ulempe.
Effektivitet og komfort av regulære uttrykk i hovedsak avhenge av den generelle konstruksjonen av en dialog med besøkende. I ett tilfelle, for å indikere dato er det tilrådelig å bruke en inngang feltet i form, i det andre tilfellet er det nødvendig å sørge for de ulike feltene for dag, måned og år. Men så noen ekstra "kostnader med kode" for å sjekke skuddår, antall måneder, antall dager i dem.
Søk og erstatt, regulære uttrykk minne
Javascript erstatte (regulære uttrykk) ved hjelp av metoden i String objekt, og tillate oss å finne verdien og endre det umiddelbart. Dette er nyttig for å korrigere skrivefeil, redigere innholdet i skjemaet og for omforming av data fra en presentasjon format til et annet.
Var cRegExp = / ([a-z] +) \ s ([a-z] +) \ s ([a-z] +) / i; // når du søker er tre 'variabler'
Var sTest = 'denne artikkelen er bra!';
Var cRegRes = sTest.replace (cRegExp "$ 2, $ 3, $ 1");
Var dTestLine = document.getElementById ( 'scTestLine');
dTestLine.innerHTML = 'uttrykket' + cRegExp + 'for strengen "' + sTest + '" slår:' + cRegRes;
resultatet:
ekspresjons / ([a] +) \ s ([a] +) \ s ([a] +) / i for linjen "denne artikkelen er god!" ut: artikkelen er bra, dette!
Ved utføring av hvert par av parenteser lagrer resultatet i den 'variable' $ n, hvor n - antall brakettparene ($ 1, $ 2, ...). I motsetning til konvensjonelle, her variabel nummerering er en, ikke er 0.
generelle anbefalinger
Regulært uttrykk forenkler koden, men tiden for å utvikle det ofte gjør en forskjell. Du kan starte med enkle design og deretter gjort å kombinere til mer komplekse uttrykk. Du kan bruke ulike elektroniske tjenester for å teste regulære uttrykk eller spesielle lokale verktøy.
Det beste alternativet vil skape sitt eget bibliotek med regulære uttrykk og sine egne verktøy for å teste nye utbygginger. Dette er den beste måten å konsolidere den erfaring og å lære å raskt bygge pålitelig og behagelig design.
Ved hjelp av repetisjon av tegn og strenger, som er, spesialtegn '*', '+' og klammer, som indikerer antall repetisjoner bør styres av prinsippene om enkelhet og hensiktsmessighet. Det er viktig å innse at et regulært uttrykk til begynnelsen av sitt arbeid, og for å få resultatet er helt i kraften i motoren som brukes av nettleseren. Ikke alle språk er tilsvarende Javascript. Hver nettleser kan bringe sine personlige preferanser i tolkningen av regulære uttrykk.
Kompatibilitet er ikke bare sider og stilark, i regulære uttrykk, har det også å gjøre. Den siden bruker Javascript, kan betraktes som en velfungerende bare når det har lykkes jobbet på en rekke nettlesere.
Javascript, String og RegExp
Ved riktig jobb på klientnivå, det vil si i den besøkendes nettleser i Javascript, det krever høy kompetanse av utbygger. Lenge nok har du muligheten til å feilsøke Javascript-kode leserens egne midler eller ved hjelp av tredjeparts utvidelser, kode redaktører, selvstendige programmer.
Men ikke alle tilfeller kan debugger håndtere og gir god støtte for utbygger, en rask feildeteksjon, oppdage flaskehalser. Tidspunktene når datamaskinen har vært fokusert på beregningene, i en fjern fortid. Nå vier spesiell oppmerksomhet til informasjon og linjeobjekter har kommet til å spille en betydelig rolle. Antallet stål strenger, og deres sanne natur de manifesterer bare til rett tid og rett sted.
Regulære uttrykk forsterke muligheten for linjer, men krever selvrespekt. Debug RegExp i hans arbeid, selv om det er mulig å simulere, ikke så interessant idé.
Forstå strukturen og logikken i RegExp objekt, betyr objekt String, syntaks og semantikk av Java - en sann trygg og sikker kode, stabil drift av hver side, og området som helhet.
Similar articles
Trending Now