Diskuze: Porovnání stringu s polem stringů s proměnnou
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 8 zpráv z 8.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Toto by se dalo udělat přes Regex.
https://www.itnetwork.cz/…vyrazy-regex
Aktuálně nemůžu poskytnou kód ale snad jsem tě alespoň nasměroval
Děkuji za komentář. O existenci Regex vím, ale pro mě dost nepřehledný a nemám v něm prakticky žádnou praxi.
Ako už písal Jakub Hýža , regex velmi pomôže
Ak nechceš používať regex , tak som vytvoril funkciu , ktorá to
testuje
Použil som string.split() a testpval som potom polia
var forbiddenRequests = [
"/account/notifications/mark-as-read",
"/user/*/send-message",
];
function include(testURL){
splitedURL = testURL.split("/"); // rozdelíme si testovanú URL podlá lomítka "/"
// tento cyklus prejde cez pole zakázaných URL
for(i of forbiddenRequests){
isIncluded = 1; // pri každej zakázanej URL si nastavíme premennú na 1 - budeme ju potrebovať
TMP = i.split("/"); // každú zakázanú URL rozdelí podľa lomítka "/"
// Ak sa nerovná dĺžka testovanej a zakázanej URL , tak nemá zmysel testovať , určite sa nerovnajú
if(TMP.length != splitedURL.length){
continue; // preskočime a ideme na ďalšiu zakazanú URL
};
//Prejdeme teraz cez obidve premenné
for(i = 0;i<TMP.length;i++){
// ak je v zakazanej premennej hviezdička , nemá zmysel testovať rovnosť , pretože namiesto hviezdičky ide všetko
if(TMP[i]=="*"){
continue;
};
// testujeme či sa výrazy nerovnajú
// ak sa nerovnajú , nastavíme premennú isIncluded na 0 a vyskočíme z cyklu
if(TMP[i]!=splitedURL[i]){
isIncluded = 0;
break;
};
// testujeme či je premenná isIncluded nastavená
// ak je nastavená na 0 = niečo je počas testu zmenilo , a kedže jediné čo tu premennú mení je nezhoda medzi zakazanou a testovanou URL, pokračujeme ďalej
// ak je nastavená na = nič ju nezmenilo , to znamená , že testovaná a zakazaná URL su rovnaké - vrátime true
if(isIncluded == 1){
return true;
};
};
};
// ak sa dostaneme sem , znamená to , že žiadna zakázaná URL nebola rovnaká ako testovaná - vrátime false
return false;
};
Samozrejme je to len model
Tvojou úlohou je to zabaliť do triedy aby si to mohlo používať kde
chceš
Dôvod prečo som to neurobil ja je v tom , že ty potrebuješ riešenie a podla
toho si tu triedu aj upravíš
Dúfam že som pomohol
Teraz som si všimol že nepoúživaš čistý JavaScript , ale
Typescript
Dúfam že to nevadí
Regexp v js resi presne to, co chces.
http://www.regexp.cz/
^aaa - string zacina aaa "aaa" "aaab" "aaaxyz123"
bbb$ - string konci bbb "bbb" "xzy123bbb"
Dale pak mas seznamy znaku
[a] = a
[a-z] = a nebo b nebo c nebo...
[A-Z]
[0-9]
[ar4] = [4ra] = 4 nebo r nebo a
a[abc]x = aax nebo abx nebo acx
Opakovani
? = 1
* = 0-nekonecno
{min} {min,max}
{3} 3x
{3\} 3 az nekonecno
{3,5} az 5
Pr:
aaa = a{1,3} = 'a' 1x az 3x
aaa = a{3}
aaa = a+ = 'a' 1x a vickrat
aaa = a* = 'a' vubec nebo vicekrat
aaa = [a]+ seznam znaku, kde je aspon jedno 'a' a opakovani
aaa = [abcd]+ seznam znaku, kde je aspon jedno 'a' a opakovani
aaa = a[abcd]+ retezez zacina 'a', za nim nasleduje cokoliv ze seznamu, kde je
aspon jedno 'a', takze to plati i
aaa, aa, ab, ac, ad, aaab, abab ,...
"/account/notifications/mark-as-read",
"/user/*/send-message",
new RegExp("[/]account[/]notifications[/]mark-as-read",'') nebo /\/account\/notifications\/mark-as-read/ nebo /[/]account[/]notifications[/]mark-as-read/
new RegExp("^[/]account[/]notifications[/]mark-as-read$",'')
new RegExp("^[/]user[/].*[/]send-message$", ''),
new RegExp("[/]user[/].*?[/]send-message", ''),
cili string zacina [/]user[/], pak jakykoliv znak (.) v jakemkoliv mnozstvi
(), a konci to [/]send-message
nebo
ve string kdekoliv od zacatku je [/]user[/], pak jakykoliv znak (.) v jakemkoliv
mnozstvi () dokud nenarazis (?), na retezec [/]send-message a za nim muze
byt take cokoliv, protoze tam neni $ pro ukonceni
.*? = to je takova divoka trojkombinace, kde ? znamena neco jineho nez jsem psal
vys, ale je to popsano na te strance
[/] = lomitko se pouziva pro ohraniceni zacatku a konce, proto by melo byt
zalomitkovane nebo jako vycet znaku \/ nebo [/]
[/]user[/].*?[/]send-message
plati pro
/user/ahoj/send-message
XYZ/user/ahoj/send-message
XYZ/user/ahoj/send-messageUVW
/user/ahoj/send-messageUVW
^[/]user[/].*?[/]send-message$
^[/]user[/].*[/]send-message$
To by melo byt stejne, protoze pokazde vyzadujes zacatek a konec, takze by tam ?
nemel mit vyznam
Zkratka, regularnimi vyrazy hledas ve stringu nejakou cast podle pravidla, ktere si napises. Neni to tak slozite, jak se zda. jen to ma divoky zapis.
oprava, tady to mrsi texty
{3\} 3 az nekonecno
{3,} 3 az nekonecno - spravne
\+ 1 az nekonecno, samotne plus bez lomitka (nepochopitelne z + udelal odrazku,
kdyz odrazka je *)
Zobrazeno 8 zpráv z 8.
