Mga computerProgramming

Javascript, regular na expression halimbawa, tingnan Regular Expression

Bago ang pagdating ng hypertext wika, ngunit sa halip, hanggang sa ito ay naging malinaw na hindi lamang namin ay dapat magmukhang, ngunit upang gawin ito sa ilalim ng ilang mga kundisyon, sa isang partikular na lugar, sa ilalim ng nabagong data sa tamang dami, ang karaniwang paghahanap at palitan function na isinaayos sa anumang sopistikadong programmer. Lumikha ng masterpieces ng sining paghahanap sa programming wika, at database daig sa paraan ng pagsa-sample ng mga kondisyon, nilagyan ng naka-imbak na mga pamamaraan, mga trigger at iba pang mga paraan ng bulky sample relational impormasyon track. Ang anyo ng mga regular na expression na ang rebolusyon ay hindi humahantong, ngunit ito ay isang kapaki-pakinabang at maginhawang paraan upang hanapin at palitan ng impormasyon. Halimbawa, regular na expression JavaScript email makabuluhang gawing simple ang registration ng mga bisita, huwag i-load ang website ng pagpapadala ng mga mensahe sa nonexistent address.

Upang sabihin na ang isang JavaScript regular na expression ay mas mas mahusay produmannnyh mga pagkakasunud-sunod indexOf () tawag sa frame ng maginoo cyclic at operator, ay hindi maaaring ngunit sabihin na ito ay ginawa ang script code ay compact, ngunit maliit na maaaring maunawaan sa ang uninitiated, ay maaaring maging unambiguously.

Bagay RegExp = + template engine

Regular na expression - ang isang template + engine. Ang una ay talagang isang regular na expression - JavaScript object - ang RegExp, ang pangalawang - ang template na performer, ilapat ito sa linya. Engine na ipatupad regular na expression para sa bawat programming language ay magkaiba. At bagaman hindi lahat ng mga pagkakaiba ay makabuluhang, ito ay dapat na makitid ang isip sa isip, pati na rin siguraduhin na maingat na suriin ang mga regular na expression bago ang operasyon nito.

Ang isang espesyal na notation kapag sumusulat ng mga regular na expression ay lubos na madaling gamitin at lubos na epektibong, ngunit ito ay nangangailangan ng pag-aalaga, pagiging maayos at pasensya mula sa nag-develop. Sa pamamagitan ng pagtatanda regular na expression pattern kailangang masanay. Ito ay hindi isang libangan, ito ay ang logic ng isang mekanismo para sa pagpapatupad «JavaScript regular na expression."

regular na pattern na expression

Pinayagan dalawang pagpipilian:

var expOne = / abc * / i;

var expTwo = RegExp ( "abc *", "i");

Kadalasan ito ay ginagamit sa unang paraan. Sa pangalawang kaso, ang mga quotes, dahil upang gamitin ang character '\', dapat itong nakatakas sa pamamagitan ng pangkalahatang mga patakaran.

'Ko - bandila na nagpapahiwatig "case insensitive". Maaari mo ring gamitin flags 'g' - «Global Paghahanap 'at' m '- isang multi-line sa paghahanap.

Ang simbolong '/' upang ipahiwatig ang mga karaniwang na gumamit ng isang template.

Ang simula at dulo ng regular na expression

Ang '^' tumutukoy sa mga character (s) mula sa kung saan upang simulan ang regular na expression, at ang '$' kung aling character (s) ay dapat na sa dulo. Hindi ka dapat mag-eksperimento sa mga ito sa loob ng isang expression, kung saan mayroon sila ng isang iba't ibang mga kahulugan.

Halimbawa,

var eRegExp = bagong RegExp (cRegExp, 'i');

var cRegRes = '';

var sTest = 'AbcZ';

kung (eRegExp.test (sTest)) {

cRegRes + = '- Oo';

} Iba Pa {

cRegRes + = '- Walang';

}

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

dTestLine.innerHTML = 'Expression /' + cRegExp + '/ para sa hilerang "' + sTest + '"' + cRegRes.

Ang element 'scTestLine' ay magreresulta (cRegExp variable ay may katumbas na kahulugan):

expression / ^ AbcZ $ / para sa mga string "abcz" - Oo

Kung aalisin mo ang 'i' na flag, ang resulta ay:

expression / ^ AbcZ $ / para sa mga string "abcz" - Walang

Ang mga nilalaman ng isang regular na expression

Ang isang regular na expression ay isang pagkakasunod-sunod ng mga character, na kung saan ay ang paksa ng paghahanap. Expression / qwerty / naghahanap ng mga entry ay sequence na ito:

expression / qwerty / para sa string "qwerty" - Oo

expression / qwerty / para sa string "123qwerty456" - Oo

Ang '^' pagbabago ay expression:

expression / ^ qwerty / para sa string "123qwerty456" - Walang

expression / ^ qwerty / para sa string "qwerty456" - Oo

Katulad nito, para sa katapusan ng linya simbolo. Regular na expression payagan para sa pagkakapare-pareho: halimbawa, [az], [AZ], [0-9] - lahat ng mga titik ng alpabeto sa kasong ito o figure. Russian mga titik din ay maaaring gamitin, ngunit dapat bigyang-pansin ang pag-encode ng mga string (na kung saan ay na hinahangad na hinahangad) at mga pahina. Kadalasan Russian titik, pati na rin ang mga espesyal na character, ito ay higit na mabuti upang itakda ang mga code.

Kapag bumubuo ng isang regular na expression ay maaaring tukuyin ang mga opsyon para sa pagkakaroon ng mga tiyak na mga simbolo sa isang partikular na lokasyon, na may kanilang mga numero ng ibinigay na tulad ng sumusunod: '*' = 0 uulit o higit pang beses; '+' = 1 o higit pang mga pag-uulit ulit; {1} ay ang parehong, tulad ng '+'; {N} = uulit eksakto n beses; {N,} = n uulit ulit o higit pa; {N, m} =-uulit ng n na m beses.

Ang paggamit ng mga bracket, maaari mong tukuyin ang character set ng mga opsyon. Mukhang na ito. [Abcd] = [ad] = tuwing apat na simbolo: 'isang', 'b', 'c' o 'd'. Maaari mong tukuyin kung hindi man. Anumang karakter maliban sa mga tinukoy sa hanay: [^ abcd] = anumang character maliban sa 'isang', 'b', 'c' o 'd'. '?' Ito ay nagpapahiwatig na sa puntong ito ang simbolo ay hindi maaaring maging. '.' Tinutukoy ng anumang character maliban na nagpapahiwatig ng newline. Ito '\ n', '\ r', '\ u2028' o '\ u2029'. Ang expression '\ s * | \ S *' = '[\ s | \ S] *' ay nangangahulugan na ang search para sa anumang mga character, kabilang ang mga bagong linya.

Pinapayak na bersyon ng mga regular na expression

Ang expression '[\ s | \ S] *' - ang paghahanap na space, o kakulangan nito, iyon ay ang lahat na ay sa linya. Sa kasong ito, ang simbolo '\ s' ay nagpapahiwatig ng isang puwang, at '\ S' - kanyang pagliban.

Gayundin, maaari mong gamitin ang '\ d' upang hanapin ang mga digit decimal, at '\ D' makahanap ng isang non-numeric character. Pagtatanda '\ f', 'r' at '\ n' ay tumutugma sa mga form-feed, carriage return at linya-feed.

Ang tab na character - '\ t', vertical - '\ v'. Ang pagtatalaga '\ w' na nahahanap ang anumang Latin alpabeto character (titik, numero, at ang mga underscore mark) = [A-Za-z0-9_].

Ang pagtatalaga '\ W' ay katumbas ng [^ A-Za-z0-9_]. Ang ibig sabihin nito anumang character na hindi isang titik ng alpabeto, numero, o '_'.

Search karakter '\ 0' = search NUL character. Search '\ xHH' o '\ uhhhh' = Hanapan ang karakter code o hhhh HH ayon sa pagkakabanggit. H - hexadecimal digit.

Inirerekumendang paraan ng pagsasalita at coding ng mga regular na expression

Ang anumang regular na expression ay mahalaga sa maingat nasubukan sa iba't ibang mga bersyon ng mga hilera.

Gamit ang karanasan ng paglikha ng isang regular na expression error ay magiging mas maliit, ngunit gayon pa man ay dapat laging nag-iingat sa isip na ang kanilang sariling mga kaalaman sa mga alituntunin ng pagsulat ng mga regular na expression ay hindi maaaring maging totoo, lalo na kapag ang "regular season" ay inilipat mula sa isang wika papunta sa isa pa.

Pagpili sa pagitan ng klasiko (eksaktong indikasyon) at isang pinasimple na bersyon ng isang regular na expression, ito ay mas mahusay na mas gusto ang una. Matapos ang lahat, sa classics ay laging malinaw na nakasaad na ang parehong mga hinahangad. Kung ang regular na expression o search string ay may Russian mga titik, dapat humantong sa isang solong pag-encode ng lahat ng mga linya at ang pahina kung saan nagpapatakbo maghanap ng JavaScript code ay gumaganap ng isang regular na expression.

Kapag may isang character sa pagpoproseso, non-Latin alpabeto, ito ang akma upang isaalang-alang ang isang pahiwatig ng ang mga code ng character, hindi ang mga character na kanilang sarili.

Kapag ang pagpapatupad ng mga search algorithm sa JavaScript regular na expression ay dapat na maingat na naka-check. Ito ay partikular na mahalaga upang makontrol ang character encoding.

Ang mga panaklong sa mga regular na expression

Ang mga bracket tukuyin ang mga opsyon para sa mga simbolo, na kung saan ay dapat na o hindi maaaring sa isang tiyak na lugar, at pag-ikot - sequence variant. Ngunit ito ay lamang ng isang pangkalahatang panuntunan. Mula sa mga ito ay walang exception, ngunit mayroong isang malawak na iba't-ibang mga application.

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

var eRegExp = bagong RegExp (cRegExp, 'i');

var cRegRes = '';

var sTest = 'picture.jpg';

kung (eRegExp.test (sTest)) {

cRegRes + = '- Oo';

} Iba Pa {

cRegRes + = '- Walang';

}

mga resulta:

/[az]*.(png|jpg|gif)/ expression para sa line "picture.jpg" - Oo

/^[ad][az]*.(png|jpg|gif)/ expression para sa "picture.jpg" line - Walang

/^[ad][az]*.(png|jpg|gif)/ expression para sa line "apicture.jpg" - Oo

/^[ad][az]*.(png|jpg|gif)/ expression para sa "apicture.jg" line - Walang

Dapat ito ay nabanggit na ang lahat, pagkatapos ng asterisk ay maaaring naroroon zero ulit. Nangangahulugan ito na ang "regular season" ay maaaring magtrabaho sa mga hindi inaasahang paraan hindi bababa sa.

Suriin RegExp - testing email

Sa regular JavaScript expression na nakuha sa dalawang mga pamamaraan, pagsubok at exec, at maaaring magamit sa mga linya na bagay (String) sa kanilang pamamaraan (function): paghahanap, split, palitan at tugma.

pagsubok na pamamaraan ay na-nagpakita, pinapayagan ka upang suriin ang kawastuhan ng mga regular na expression. Pamamaraan Resulta: true / false.

Isaalang-alang ang mga sumusunod JavaScript regular na expression. Lagyan ng check ang email mula sa ang bilang ng mga "mahirap, ngunit tiyak na":

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

isang string var sTest ='SlavaChip@sci.by 'ay nagbibigay sa totoo, at pagkatapos ay doon ang string na ito ay ang tamang email address. audit ay isinasagawa sa pamamagitan eRegExp.test (sTest).

Praktikal na paggamit: paggamot ng e-Mail

Exec Ang pamamaraan ay nagbibigay ng output array, tumawag sa:

var aResult = eRegExp.exec (sTest);

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

Nagbibigay ito ng mga sumusunod na resulta:

9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
hindi naipalilawanag
sci.by
hindi naipalilawanag
sci.by
sci.

Ibang mga paraan gumagana nang katulad. Ito ay inirerekomenda upang suriin ang mga ito out sa iyong sarili. Pag-unlad at paggamit ng mga regular na expression, ito ay kanais-nais na magtrabaho sa pagsasanay, ang code pagkopya ay hindi palaging ipinapayong dito.

Popular "regular season"

JavaScript regular na expression na ibinigay sa email ay hindi lamang may mga maraming iba pang mga madaling pagpipilian. Halimbawa, /^[\w-\.]+@[\w-]+\.[az]{2,3}$/i. Gayunpaman, ito embodiment isinasaalang-alang hindi lahat embodiments ng email address record.

Siyempre, kailangan mong makita ang karanasan ng mga kasamahan, upang pag-aralan kung paano ang kanilang mga ipinanukalang bago mag-disenyo ng kanilang sariling on ang JavaScript regular na expression. Ngunit may mga ilang mga kahirapan. Hindi namin dapat kalimutan na ang isang JavaScript regular na mga expression (mga halimbawa ng kung kailan pagkopya) ay maaaring doblehin ang mahahalagang mga character: '\', '/' o quotes. Ito ay humantong sa error, na kung saan maaari kang maghanap mahaba.

Ito ay mahalaga upang isaalang-alang ang karaniwang "tao na dimensyon." Matapos pormal JavaScript regular na expression para sa mga telepono, na maaaring maging ang bisita (tao), ito ay ibinigay sa iba't ibang mga paraan: 123-45-67, (29) 1234567, 80291234567 o 375,291,234,567. At ito ay ang lahat ng parehong numero. Spelling maramihang pattern ay hindi laging katanggap-tanggap, at matibay pagkapirmi ng ang mga patakaran para sa pagsulat ng mga numero ay maaaring lumikha ng mga hindi kinakailangang paghihirap o paghihigpit. Pagpipilian / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i ay angkop para sa karamihan ng mga kaso mong suriin ang iyong numero ng telepono.

Kung nais mong gumawa ng isang JavaScript regular na expression, mga tseke digit lamang, kahit na tulad ng isang simpleng kaso ay nangangailangan ng paglilinaw. Dapat itong itinuturing na isang integer o fractional, pang-agham pagtatanda, o normal, positibo o negatibong numero. Maaari mo ring isaalang-alang ang pagkakaroon ng mga simbolo ng pera, ang bilang ng mga digit pagkatapos ng decimal point at ang dibisyon ng ang buong bahagi ng numero sa triad.

Expression / ^ \ d + $ / i-check lamang ang numero at /^\d+\.\d+$/i expression ay nagbibigay-daan sa paggamit ng isang punto upang ipahiwatig ang fractional bahagi ng numero.

Sa JavaScript pagsuri regular na expression ay maaaring gamitin upang ipahiwatig ang format ng hard input ng data, na kung saan ay mahalaga, lalo na kapag nagpapasok ng mga profile, passport data, at mga legal na addresses t. D.

Lagyan ng tsek ang mga petsa - simpleng sa complex

Isaalang-alang ang isa pang JavaScript regular na expression. Mga Halimbawa sa petsa, tulad ng para sa bilang ng mga numero ng telepono ay kumakatawan pagpipilian sa pagitan ng tigas at kakayahang umangkop. Petsa ng kaganapan - ang isa sa mga mahahalagang data, na madalas ay may na ibinibigay. Ngunit pag-aayos ng input sa isang tiyak na format: "dd-mm-yyyy 'o' d.m.gg 'ay madalas na humahantong sa hindi kagustuhan ng customer. Ang paglipat mula sa input field ng pang-araw-buwan, na puno ng mga klasikong HTML form, ay hindi maaaring kumuha ng lugar kapag ipinasok mo lamang ng isang digit, at ang pangalawang input ay maaaring maging mahirap. Halimbawa, sa larangan ng araw na ito ay ipinakilala 3 at ang susunod na numero 2 ay hindi palitan ang una, at ay iniugnay sa kanyang 32, na kung saan, siyempre, ay magiging sanhi abala.

Kahusayan at kaginhawahan ng mga regular na expression mahalagang depende sa pangkalahatang konstruksiyon ng isang dialogue na may mga bisita. Sa isang kaso, upang ipahiwatig ang petsa kung kailan ito ay ipinapayong gumamit ng isang input field ng form, sa iba pang mga kaso ito ay kinakailangan upang magbigay ng para sa iba't-ibang larangan para sa araw, buwan at taon. Ngunit pagkatapos ng anumang mga karagdagang "mga gastos ng code" upang suriin ang leap year, ang bilang ng mga buwan, ang bilang ng mga araw sa kanila.

Hanapin at palitan, regular na expression memory

JavaScript palitan (regular na expression) gamit ang paraan ng String object, at payagan sa amin upang malaman ang halaga at baguhin ito kaagad. Ito ay kapaki-pakinabang para sa correcting errors pagta-type, i-edit ang mga nilalaman ng field ng form at para sa pag-convert ng data mula sa isang format ng pagtatanghal sa isa pa.

var cRegExp = / ([a-z] +) \ s ([a-z] +) \ s ([a-z] +) / i; // kapag naghahanap tatlong 'variable'

var sTest = 'artikulong ito ay mabuti!';
var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");

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

dTestLine.innerHTML = 'expression' + cRegExp + 'para sa string "' + sTest + '" i-:' + cRegRes;

Ang resulta:

expression / ([az] +) \ s ([az] +) \ s ([az] +) / i para sa line "artikulong ito ay mabuti!" out: ang artikulo ay mabuti, ito!

Kapag nagsasagawa ng bawat pares ng mga panaklong nag-iimbak ang resulta sa 'variable' $ n, kung saan n - bilang ng mga bracket pares ($ 1, $ 2, ...). Hindi tulad ng maginoo, dito variable pagnunumero ay 1, hindi 0.

Pangkalahatang mga rekomendasyon

Regular na expression pinapasimple ang code, ngunit ang oras upang bumuo ng mga ito ay kadalasang makakagawa ng pagkakaiba. Maaari kang magsimula sa mga simpleng disenyo at pagkatapos ay ginawa upang pagsamahin sa mas kumplikadong expression. Maaari mong gamitin ang iba't-ibang mga online na serbisyo upang subukan ang mga regular na expression o espesyal na mga lokal na mga tool.

Ang pinakamahusay na opsyon ay gumawa ng kanilang sariling library ng mga regular na expression at ang kanilang sariling mga tool upang subukan ang mga bagong developments. Ito ay ang pinakamahusay na paraan upang mapagsama-sama ang karanasan at upang malaman kung paano upang mabilis na bumuo maaasahan at kumportable na disenyo.

Ang paggamit ng pag-uulit ng mga character at mga string, iyon ay, mga espesyal na character na '*', '+' at braces, na nagpapahiwatig ng bilang ng mga repetitions ay dapat na guided sa pamamagitan ng mga prinsipyo ng pagiging simple at sariling kapakanan. Ito ay mahalaga upang mapagtanto na ang isang regular na expression sa simula ng kanyang trabaho, at upang makuha ang resulta ay ganap na sa kapangyarihan ng engine na ginagamit ng mga browser. Hindi lahat ng mga wika ay katumbas ng JavaScript. Ang bawat browser ay maaaring magdala ng kanilang mga personal na kagustuhan sa pagbibigay kahulugan ng mga karaniwang expression.

Kaangkupan ay hindi mga pahina lamang at style sheet, sa mga regular na expression, mayroon din itong gawin. Ang pahina ay gumagamit ng JavaScript, maaaring ituring na isang mahusay na gumagana lamang kapag ito ay matagumpay na nagtrabaho sa isang iba't ibang mga browser.

JavaScript, String at RegExp

Sa pamamagitan ng tamang trabaho sa antas ng client, iyon ay, sa browser ng bisita sa JavaScript, nangangailangan ito ng mataas na mga kasanayan sa mga developer. Long sapat na mayroon kang pagkakataon upang i-debug JavaScript code browser sariling pondo o sa tulong ng mga extension ng third-party, mga editor code, independiyenteng programa.

Gayunpaman, hindi lahat ng mga kaso, ang debugger ay maaaring panghawakan at magbigay ng mahusay na suporta para sa mga nag-develop, isang mabilis na error detection, tuklasin ang mga bottleneck. Ang mga oras kung kailan ang computer ay nakatutok sa mga kalkulasyon, sa malayong nakaraan. Ngayon, magbayad ng espesyal na pansin sa impormasyon at line mga bagay ay may dumating upang i-play ang isang makabuluhang papel. Ang bilang ng mga string ng bakal, at ang kanilang tunay na kalikasan sila ay ipakilala lamang sa tamang oras at tamang lugar.

Regular na expression mapalakas ang posibilidad ng mga linya, ngunit nangangailangan ng paggalang sa sarili. Debug RegExp sa kanyang trabaho, kahit na ito ay posible upang gayahin, hindi masyadong kagiliw-giliw na ideya.

Pag-unawa sa istraktura at lohika ng RegExp object, ibig sabihin object String, ang syntax at semantika ng JavaScript - isang tunay na ligtas at secure na code, ang matatag na operasyon ng bawat pahina at ang site bilang isang buo.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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