Computers, Programmering
Javascript, reguliere expressie voorbeelden, check reguliere expressie
Voor de komst van hypertekstalen, maar tot het duidelijk werd dat het nodig was om niet alleen te zoeken, maar ook onder bepaalde voorwaarden, op een specifieke plaats, met gewijzigde gegevens, in de juiste hoeveelheden, de gebruikelijke zoek- en vervangingsfuncties voor elke geavanceerde programmeur. Meesterwerken van zoekkunsten in programmeertalen werden gecreëerd, en databases werden verfijnd in de vorm van bemonsteringsomstandigheden, uitgerust met opgeslagen procedures, triggers en andere bemonsteringsmethoden uit omslachtige informatiesamenstellingen. Het ontstaan van reguliere expressies voor de revolutie leidde niet, maar bleek een handige en handige manier om informatie te zoeken en te vervangen. Bijvoorbeeld, regelmatige e-mail-JavaScript-uitingen vereenvoudigen de registratie van bezoekers aanzienlijk, ze downloaden de site niet door berichten te versturen naar niet-bestaande adressen.
Om te zeggen dat de JavaScript-reguliere expressie veel beter is dan de goed doordachte indexOf () sequenties in de opmaak van voorwaardelijke en cyclische operators, is het onmogelijk, maar om te zeggen dat het de scriptcode compact, maar slecht begrepen aan de oninitiatieven ondubbelzinnig maakt.
RegExp object = template + engine
Regelmatige expressies zijn een sjabloon + motor. De eerste is de reguliere expressie zelf - het JavaScript-object is RegExp, de tweede is de template executor die het op de string toepast. De motoren die regelmatige expressies uitvoeren voor elke programmeertaal zijn verschillend. En hoewel niet alle verschillen significant zijn, moet dit in gedachten worden gehouden, evenals om de regelmatige uitdrukking zorgvuldig te controleren voordat u het gebruikt.
Een speciale notatie voor het schrijven van reguliere expressies is redelijk handig en vrij effectief, maar vereist zorg, nauwkeurigheid en geduld van de ontwikkelaar. Voor notatie van patronen van reguliere expressies is het nodig om te wennen. Dit is geen eerbetoon aan de mode, het is de logica van het implementeren van het mechanisme van "JavaScript reguliere expressies".
Regelmatig expressiepatroon
Twee opties zijn toegestaan:
Var expOne = / abc * / i;
Var expTwo = RegExp ("abc *", "i");
Meestal wordt de eerste methode gebruikt. In het tweede geval worden aanhalingstekens gebruikt, dus om het'''-teken te gebruiken, moet deze worden ontsnapt aan gemeenschappelijke regels.
'Ik' is de vlag met de vermelding 'register is niet belangrijk'. U kunt ook de vlaggen 'g' - 'global search' en 'm' - multi-line zoeken gebruiken.
Het symbool '/' wordt gebruikt om een sjabloon aan te geven.
Het begin en het einde van de reguliere expressie
Het teken '^' definieert het teken (en) waaruit de reguliere expressie begint en '$' bepaalt welk teken (en) het einde zou zijn. Niet experimenteren met hen binnen de uitdrukking, daar hebben ze een andere betekenis.
Bijvoorbeeld,
Var eRegExp = nieuwe RegExp (cRegExp, 'i');
Var cRegRes = '';
Var sTest = 'AbcZ';
Als (eRegExp.test (sTest)) {
CRegRes + = '- Ja';
} Anders {
CRegRes + = '- Nee';
}
Var dTestLine = document.getElementById ('scTestLine');
DTestLine.innerHTML = 'De uitdrukking /' + cRegExp + '/ voor de tekenreeks' + sTest + '"+ cRegRes.
In het element 'scTestLine' zal er een resultaat zijn (de variabele cRegExp heeft de overeenkomstige waarde):
De uitdrukking / ^ AbcZ $ / voor de string "abcz" - Ja
Als u de vlag 'i' verwijdert, wordt het resultaat:
De uitdrukking / ^ AbcZ $ / voor de tekenreeks "abcz" - Nr
Regelmatige expressie inhoud
Een reguliere expressie is een reeks karakters die het onderwerp van een zoekopdracht is. De uitdrukking / qwerty / kijkt naar het optreden van precies deze sequentie:
Expressie / qwerty / voor de string "qwerty" - Ja
De uitdrukking / qwerty / voor de string "123qwerty456" - Ja
Het teken '^' verandert de essentie van de uitdrukking:
De uitdrukking / ^ qwerty / voor de string "123qwerty456" - Nr
De uitdrukking / ^ qwerty / voor de string "qwerty456" - Ja
Evenzo voor het einde van de lijn karakter. Regelmatige uitdrukkingen maken sequenties toe: bijvoorbeeld [az], [AZ], [0-9] - alle letters van het Latijnse alfabet in het opgegeven register of cijfers. Russische letters mogen ook gebruikt worden, maar u moet aandacht besteden aan de codering van strings (waar te zoeken naar waarnaar wordt gezocht) en de pagina. Vaak worden Russische letters, zoals speciale tekens, bij voorkeur gegeven door codes.
Bij het vormen van een reguliere expressie kunt u de opties voor de aanwezigheid van bepaalde symbolen op een bepaalde plaats opgeven, met hun getal als volgt: '*' = herhaling van 0 of meer keren; '+' = Herhaal 1 of meer keren; {1,} is hetzelfde als '+'; {N} = herhaling precies n keer; {N,} = herhaling van n en meer tijden; {N, m} = herhaling van n tot m keer.
Met vierkante haakjes kunt u de karaktervarianten van de set opgeven. Het ziet er zo uit. [Abcd] = [ad] = elk teken van vier: 'a', 'b', 'c' of 'd'. U kunt het tegenovergestelde opgeven. Elk ander teken dan die in de set: [^ abcd] = elk teken behalve 'a', 'b', 'c' of 'd'. '?' Geeft aan dat er op dit moment geen symbool mag zijn. '' Definieert elk karakter, behalve een lijnbreuk. Dit is '\ n', '\ r', '\ u2028' of '\ u2029'. De uitdrukking '\ s * | \ S *' = '[\ s | \ S] *' betekent het zoeken naar elk teken, inclusief regelonderbrekingen.
Vereenvoudigde versies van de reguliere expressie
De uitdrukking '[\ s | \ S] *' - zoek naar een ruimte of zijn afwezigheid, dat is alles wat in de lijn staat. In dit geval staat de notatie '\ s' voor een ruimte en '\ S' staat voor zijn afwezigheid.
Op dezelfde manier kunt u '\ d' zoeken naar een decimale cijfer, en '\ D' zal een niet-numeriek teken vinden. De notaties '\ f', 'r' en '\ n' komen overeen met formuliervoer, wagenrendement en lijnvoeding.
Het tabtype is '\ t', het verticale teken is '\ v'. De notatie '\ w' zal elk karakter van het Latijnse alfabet vinden (letters, cijfers, onderstreping) = [A-Za-z0-9_].
De notatie '\ W' is gelijk aan [^ A-Za-z0-9_]. Dit betekent elk teken dat geen letter van het Latijnse alfabet is, een nummer of een '_' teken.
Zoek naar het teken '\ 0' = zoek naar het NUL-teken. Zoek naar '\ xHH' of '\ uHHHH' = zoek naar een teken met respectievelijk de HH- of HHHH-code. H - hexadecimale cijfer.
Aanbevolen taal en codering van de reguliere expressie
Elke reguliere expressie is belangrijk om zorgvuldig te testen op verschillende regelopties.
Met de ervaring van het creëren van reguliere expressies, zullen fouten minder zijn, maar toch moet men altijd in gedachten houden dat de eigen kennis van de regels van het schrijven van een reguliere expressie niet overeenkomt met de realiteit, vooral wanneer de 'gewone' wordt overgebracht van de ene taal naar de andere.
Het kiezen tussen de klassiekers (exacte indicatie) en een vereenvoudigde versie van de reguliere expressie, het is beter om de eerste te kiezen. Immers, de klassiekers geven altijd duidelijk aan wat er wordt gezocht. Als er Russische letters zijn in de reguliere expressie of in de zoekstring, moet u leiden tot een enkele codering van alle lijnen en een pagina waarop de JavaScript-code die de reguliere expressie uitvoert, werkt.
Bij het verwerken van tekens die niet bij het Latijnse alfabet behoren, is het zinvol om te overwegen de karaktercodes te specificeren, niet de karakters zelf.
Bij het implementeren van JavaScript-zoekalgoritmen moet de reguliere expressie zorgvuldig worden gecontroleerd. Het is vooral belangrijk om de karaktercodering te controleren.
Parentheses in reguliere expressies
De vierkante haakjes specificeren de karaktervarianten die moeten zijn of niet aanwezig zijn op een bepaalde plaats, en ronde zijn varianten van de sequenties. Maar dit is slechts een algemene regel. Er zijn geen uitzonderingen daaruit, maar er zijn veel verschillende toepassingen.
Var cRegExp = "[az] *. (Png | jpg | gif)";
Var eRegExp = nieuwe RegExp (cRegExp, 'i');
Var cRegRes = '';
Var sTest = 'picture.jpg';
Als (eRegExp.test (sTest)) {
CRegRes + = '- Ja';
} Anders {
CRegRes + = '- Nee';
}
resultaten:
Expression /[az]*.(png|jpg|gif)/ voor de regel "picture.jpg" - Ja
Expressie /^[ad][az]*.(png|jpg|gif)/ voor de regel "picture.jpg" - Nee
Expressie /^[ad][az]*.(png|jpg|gif)/ voor de tekenreeks "apicture.jpg" - Ja
Expressie /^[ad][az]*.(png|jpg|gif)/ voor de tekenreeks "apicture.jg" - Nee
Er moet speciaal worden opgemerkt dat alles, waarna een sterretje bestaat, nul keer aanwezig kan zijn. Dit betekent dat de 'gewone' op de meest onverwachte manier kan werken.
RegExp controleert - e-mail testen
In JavaScript ontvangen regelmatige expressies twee methoden, test en exec, en kunnen worden gebruikt in String-objecten in hun methodes: zoeken, splitsen, vervangen en matchen.
De testmethode is al aangetoond, het staat u toe om de juistheid van een reguliere expressie te controleren. Het resultaat van de methode is waar / onwaar.
Overweeg de volgende reguliere JavaScript-uitdrukkingen. E-mail controleert uit het aantal 'moeilijk, maar accuraat':
Var eRegExp = /^(([^<>()\[\\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s @ "({\ [[0-9] {1,3} \. [0-9] {1,3} \. [0-9] {0-9} {0} 1,3}]. [0-9] {1,3}]) (([a-zA-Z \ -0-9] + \.) + [A-zA-Z] {2,}) ) $ /;
Voor de string var sTest ='SlavaChip@sci.by 'geeft waar, dat wil zeggen, deze tekenreeks is het juiste e-mailadres. De controle is uitgevoerd met behulp van de eRegExp.test (sTest) methode.
Praktisch gebruik: verwerking van e-mail
De exec-methode op de uitgang biedt een array, call:
Var aResult = eRegExp.exec (sTest);
CRegRes = '
' + aResult.length + '
';
Voor (var i = 0; i
';
}
Geeft het volgende resultaat:
9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
onbepaald
sci.by
onbepaald
sci.by
sci.
De andere methoden werken op dezelfde manier. Het wordt aangeraden om ze zelf te controleren. De ontwikkeling en het gebruik van reguliere expressies is wenselijk om in de praktijk te oefenen. Kopiëren van de code is hier niet altijd passend.
Populaire "regulars"
De bovenstaande JavaScript-reguliere expressie voor e-mail is niet de enige, er zijn veel eenvoudiger opties. Bijvoorbeeld, / ^[w-\.]+@[\w-]+\.[az]{2,3}$/i. Deze optie houdt echter geen rekening met alle opties voor het opnemen van een e-mailadres.
Uiteraard moet u de ervaringen van collega's beoordelen, de methoden die zij aanbieden analyseren, voordat u uw eigen reguliere expressie op JavaScript opzet. Maar er zijn bepaalde moeilijkheden. Vergeet niet dat JavaScript-reguliere expressies (voorbeelden van hen bij het kopiëren) de essentiële tekens kunnen dupliceren: '\', '/' of aanhalingstekens. Dit zal leiden tot een fout die lang kan worden gezocht.
Het is belangrijk om rekening te houden met het gebruikelijke 'menselijke aspect'. Immers, een formele JavaScript-reguliere expressie voor een telefoon die een bezoeker (persoon) kan zijn, kan op verschillende manieren worden aangegeven: 123-45-67, (29) 1234567, 80291234567 of +375291234567. En het is hetzelfde nummer. De variant van het schrijven van meerdere sjablonen is niet altijd aanvaardbaar, en een stevige fixatie van de regel voor het schrijven van een nummer kan onnodig ongemak of beperkingen veroorzaken. De variant / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i is geschikt voor de meeste telefoonverificatiegevallen.
Als u JavaScript-reguliere expressies wilt samenstellen, kunt u alleen cijfers controleren, en zelfs zo'n eenvoudige zaak heeft verduidelijking nodig. Hij moet een geheel getal of een fractionele, exponentiële notatie of een gewoon positief nummer of negatief getal overwegen. U kunt ook rekening houden met de aanwezigheid van een valutasymbool, het aantal cijfers na de decimale punt en de verdeling van het gehele deel van het cijfer in triads.
De uitdrukking / ^ \ d + $ / i controleert alleen de cijfers en de uitdrukking / ^ \ d + \. \ D + $ / i stelt u in staat om een periode te gebruiken om het fractionele deel van een nummer aan te geven.
In JavaScript kan het controleren van reguliere expressies worden gebruikt om het formaat van de invoergegevens te specificeren, wat belangrijk is, met name bij het invoeren van vragenlijsten, paspoortgegevens, legale adressen, enz.
Het controleren van de datum is zo ongeveer ingewikkeld
Overweeg JavaScript reguliere expressies. Voorbeelden voor een datum, zoals voor een nummer of telefoonnummer, vormen een keuze tussen stijfheid en flexibiliteit. De datum van het evenement is een van de essentiële gegevens die vaak ingevuld moeten worden. Maar het bevestigen van de invoer in een bepaald formaat: 'dd-mm-yyyy' of 'dm.yy' leidt vaak tot ontevredenheid van de klant. De overgang van het invoerveld van de dag tot en met maand, uitgevoerd door het klassieke HTML-formulier, kan niet plaatsvinden wanneer er maar één cijfer is ingevoerd, en het invoeren van de tweede kan moeilijkheden veroorzaken. Bijvoorbeeld, in het veld van de dag is 3 al ingevoerd, en het volgende cijfer 2 vervangt niet de eerste, en wordt daaraan toegewezen 32, die vanzelfsprekend ongemak zal veroorzaken.
De efficiëntie en het gemak van reguliere expressies zijn in hoofdzaak afhankelijk van de algemene opbouw van de dialoog met de bezoeker. In een geval is het raadzaam om één formulier invoerveld te gebruiken om de datum aan te geven. In een ander geval is het nodig om verschillende velden voor de dag, maand en jaar te geven. Maar dan zijn er extra "code kosten" voor het controleren van het sprongjaar, het aantal maanden, het aantal dagen in hen.
Zoek met vervanging, herinnering aan de reguliere expressie
JavaScript vervangen (reguliere expressies) gebruik de methode van het String object en laat u de waarde vinden en onmiddellijk wijzigen. Dit is handig voor het corrigeren van invoerfouten, het bewerken van de inhoud van formuliervelden en het omzetten van data van een presentatieformaat naar een ander.
Var cRegExp = / ([а-я] +) \ s ([а-я] +) \ s ([а-я] +) / i; // op zoek worden drie 'variabelen' gemaakt
Var sTest = 'dit artikel is goed!';
Var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");
Var dTestLine = document.getElementById ('scTestLine');
DTestLine.innerHTML = 'De uitdrukking' + cRegExp + 'voor de tekenreeks' + sTest + 'zal zijn:' + cRegRes;
resultaat:
De uitdrukking / ([a-π] +) \ s ([a-π] +) \ s [[a-π] +) / i voor de regel "dit artikel is goed!" Krijg: een artikel, goed, deze!
Bij het uitvoeren van elk paar haakjes wordt het resultaat opgeslagen in de 'variable' $ n, waar n het getal van het bracket pair is ($ 1, $ 2, ...). In tegenstelling tot de algemeen aanvaarde, wordt hier de nummering van variabelen uitgevoerd met 1, en niet met 0.
Algemene aanbevelingen
Een reguliere expressie vereenvoudigt de code, maar de tijd om het te ontwikkelen is vaak van belang. U kunt beginnen met eenvoudige constructies te werken en vervolgens te combineren in complexere uitdrukkingen. U kunt verschillende online diensten gebruiken om regelmatige uitdrukkingen of speciale lokale gereedschappen te testen.
De beste optie is om uw eigen reguliere expressie bibliotheek en uw eigen tool te maken voor het testen van nieuwe ontwikkelingen. Dit is de beste manier om ervaring te consolideren en te leren hoe u snel en betrouwbaar en comfortabel design kunt creëren.
Met behulp van herhalingen van karakters en lijnen, dat wil zeggen de speciale karakters '*', '+' en braces die het aantal herhalingen aanduiden, moeten worden geleid door de principes van eenvoud en opportuniteit. Het is belangrijk om te begrijpen dat de reguliere expressie vanaf het begin van de operatie tot het resultaat is verkregen, volledig in de kracht van de motor van de gebruikte browser is. Niet alle JavaScript talen zijn gelijkwaardig. Elke browser kan zijn eigen persoonlijke voorkeuren brengen in de interpretatie van reguliere expressies.
Compatibiliteit heeft betrekking op niet alleen pagina's en style sheets, maar ook te maken met reguliere expressies. Een pagina met behulp van JavaScript kan alleen worden geanalyseerd als het succesvol is gewerkt aan verschillende browsers.
JavaScript, String en RegExp
Door het juiste werk op clientniveau, dat wil zeggen in de browser van de bezoeker in de JavaScript taal, hoeft een hoge kwalificatie van de ontwikkelaar. Het is al lang geleden dat u JavaScript-code kunt ontwijken met uw eigen browser tools of met behulp van extensies van derden, code editors, onafhankelijke programma's.
Echter, niet alle gevallen kunnen de debugger behandelen en zorgen voor een goede ondersteuning voor de ontwikkelaar, een snelle foutdetectie, te detecteren knelpunten. De tijd dat de computer is gericht op de berekeningen, in het verre verleden. Nu, speciale aandacht besteden aan informatie en lijnobjecten zijn gekomen om een belangrijke rol spelen. Het aantal stalen snaren, en hun ware aard manifesteren ze zich alleen op het juiste moment en de juiste plaats.
Reguliere expressies versterken de mogelijkheid van lijnen, maar vereisen zelfrespect. Debug RegExp in zijn werk, ook al is het mogelijk om te simuleren, niet al te interessant idee.
Inzicht in de structuur en de logica van het RegExp object, wat betekent dat object String, de syntaxis en semantiek van JavaScript - een echte veilige code, de stabiele werking van elke pagina en de site als geheel.
Similar articles
Trending Now