Oleg_T ([info]oleg_t) rakstīja,
@ 2005-02-18 16:12:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry

Šito atradu iekš googles keša, jo orģināllapa neeksistēja.. Likaas pietiekami noderiigi shito saglabaat.

enīvei - autors ir neviens.sytes.net

________________________________________________
Pameegjinaashu biku apskaidrot Regural Expressions pamatsintaxi. Varbuut, ka kaads jau ir uzraxtiijis latvieshu valodaa, bet es dziivoju alaa un neko nezinu ;p~. Taatad Regular Expressions pamatsintaxe..

Pamata sintaxe..
Saaxim ar diwiem simboliem - "^" un "$".
^Bla - teksts, kursh saakas ar "Bla";
ira beigaz$ - teksts, kura beigas ir "ira beigaz";
^abc$ - teksts, kursh saakas un beidzas ar "abc" [iisteniibaa jau tas arii var tikai buut "abc" ;p];
bubu - teksts, kursh satur "bubu".

Taalaak par '*', '+', un '?', kuri apziimee cik reizes burc vai burtu kopa driixt atkaartoties. Tas noziimee: "nulle vai vairaak", "vienc vai vairaak", un "nulle vai vienc". Reku dazhi samplji, lai labaak saprastu:
ab* - teksts, kuram ir neviens vai vairaak "b" burtu. Tie ir "a", "ab", "abb", utt.;
ab+ - tas pac, tikai te vaidziix vismaz vienc "b". Tie ir "ab", "abbb", utt.;
ab? - te "b" vai nu var buut vai arii nee;
a?b+$ - iespeejami vienc un vairaaki "b" teksta beigaas..

Kontuuriekavaas var noraadiit apgabalu:
ab{2} - atbilst tekstam, kuram ir diwi "b" ("abb");
ab{2,} - a titam vaig vismaz diwus "b".. "abb", "abbbb", utt.;
ab{3,5} - driixt buut 3-5 "b".. "abbb", "abbbb", vai "abbbbb".

Piebilde. Vienmeer vaig noraadiit pirmo skaitli (t.i., "{0,2}", nevis "{,2}").

Tagad paars samplji apvienojot ieprieksheejos piemeerus..
a(bc)* - atbilst tekstam ar nevienu vai vairaakiem "bc";
a(bc){1,5} - viena liidz piecas kopijas ar "bc".

Ir veel taac '|' simbols, kursh straadaa kaa OR operators:
gy|wazaap - atbilst tekstam, kuraa ir "gy" vai "wazaap";
(b|cd)ef - teksts, kuraa ir "bef" vai "cdef";
(a|b)*c - teksts, kura beigas ir ar/bez "a" vai "b" ar "c".

Punkc ('.') noziimee vienu simbolu:
a.[0-9] - teksts, kuram, seko viens simbols un cipars;
^.{3}$ - teksts ar 3 simboliem.

Izteiksmes kwadraatiekavaas noraada, kuri simboli ir atljauti (vienaa poziicijaa, viens simbols):
[ab] - teksts, kursh satur "a" vai "b" (tas pac kas "a|b");
[a-d] - teksts, kas satur tikai mazos burtus no "a" liidz "d" (akal tas pac, kas "a|b|c|d" vai "[abcd]");
^[a-zA-Z] - teksts, kursh saakas ar burtu;
[0-9]% - viens cipars pirms "%" ziimes;
,[a-zA-Z0-9]$- teksts, kursh beidzas ar komatu un turpinaas ar burtu vai ciparu.

Var arii, protams, noraadiit, kurus simbolus negrib izmantot - vienkaarshi jaaizmanto "^" kaa pirmais simbols kwadraatiekavaas (t.i., %[^a-zA-Z]% - starp diwaam "%" ziimeem nedriixt atrasties burc).

Lai izmantotu literaaraa veidaa "^.[$()|*+?{\", priekshaa jaapiemet slashu "\".
Tikai in da PHP vaig arii to slashu noslashot. Tjipa (\$|!)[0-9]+ in da PHP buus - ereg("(\\$|!)[0-9]+", $str).


Valiidas naudinjas..
Taax. Nu jau mees esam iemaaciijushies sho to un varam jau izdariit ko deriigu: uzcept regulaaro expressionu, kas paarbauda lietotaaja ievadiito naudinju. Naudinju var ieraxtiit 4os veidos: "10000.00" un "10,000.00", un, bez santiimiem, "10000" un "10,000". Nju tad saakam..

^[1-9][0-9]*$ - paarbauda vai nesaakas ar 0, bet rodas viena probleema, ja skaitlis ir 0. risinaajums ir
^(0|[1-9][0-9]*)$ - tikai nulle vai kaads cits nummurs, kursh nesaakas ar nulli.
Veel buutu arii veelams atljaut miinusus. ^(0|-?[1-9][0-9]*)$ Titais noziime, ka var buut tikai nulle vai arii "-" un kaads skaitlis, kursh nesaakas ar nulli.
Labi, nebuusim ljauni un atljausim juuzerim raxtiit ar 0 un "-" ziimi ar atnjemsim. Labaak pielixim komatu ;p
^[0-9]+(\.[0-9]{1,2})?$ Aiz komata [punkta] valiidi buus nevienc, vienc vai diwi cipari.
Laikam jau veel gribam veel arii atdaliit ar apostrofu shur tur lieliem skaitljiem..
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?$
Tas arii viss. Neaizmistam, ka "+" var aizstaat ar "*", ja negribam, neko ievadiit. Protams, nedriixt arii aizmirst noslashot "\" ;p.


Valiids e-mails..
Taax.. Kaa zinam, mailiem ir triis daljas juuzeris@serveris.com. Juuzerneimaa driixt buut visi burti, cipari, punkc, miinus ziime un pasviitrojums ("_"). Uz servera neimu attiecas tas pats iznjemot pasviitrojumu.
^[_a-zA-Z0-9-]+$ - titais veel mums neatljauj punktu..
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$ - taga varam arii likt punktu..
Par cik eregi() naw case-sensetive [nemana shkjirbu starp lieliem un maziem burtiem], tad var atbriivoties no "A-Z"..
^[a-z0-9-]+(\.[a-z0-9-]+)*$ - serwera nosaukumam tas pac, ka lietotaajam, tikai bez "_"..
un taga saliekam kopaa.. ;p
^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$

Njekaa iipasha..
A taga jaasaak lasiit PHP manuaali ;p
Ir taadas norm funkcijas kaa eregi() un ereg()..
Piem.. samplis, kaa dabuut failneimu no URLa..
ereg("([^\\/]*)$", $pathOrUrl, $regs);
echo $regs[1];

Tikpat noderiigas lietas ir ereg_replace() un eregi_replace()..
ereg_replace("[ \n\r\t]+", ",", trim($str)); - shis, piemeeram, atdala visus vaardus textaa ar komatiem

Tas arii viss. Kaa redzi, nemaz nav tik gruuti kaa varbuut pirmajaa mirklii likaas taadus 'zveerus' ieraugot ;p.
[Ja kaut kur esmu samurgojis greizi, tad palabojiet.]


(Ierakstīt jaunu komentāru)

Neesi iežurnalējies. Iežurnalēties?