|
65 | 65 | - [Důležité metody pro interakci s DOM](#důležité-metody-pro-interakci-s-dom)
|
66 | 66 | - [přidání interaktivity na stránku](#přidání-interaktivity-na-stránku)
|
67 | 67 | - [další vlastnosti](#další-vlastnosti)
|
| 68 | +- [RegEx (regulární exprese)](#regex-regulární-exprese) |
| 69 | + - [metody a využití RegEx](#metody-a-využití-regex) |
| 70 | + - [match()](#match) |
| 71 | + - [replace()](#replace) |
| 72 | + - [search()](#search) |
| 73 | + - [shrnutí metod pro RegEx](#shrnutí-metod-pro-regex) |
| 74 | + - [Speciální znaky pro RegEx](#speciální-znaky-pro-regex) |
| 75 | + - [pokročilé regEx znaky](#pokročilé-regex-znaky) |
68 | 76 | - [OOP (Objektově Orientované Programování)](#oop-objektově-orientované-programování)
|
69 | 77 | - [Začátek OOP](#začátek-oop)
|
70 | 78 |
|
@@ -968,7 +976,109 @@ samozřejmě je více vlastností co můžeme přidat k HTML prvkům ale toto si
|
968 | 976 |
|
969 | 977 | # RegEx (regulární exprese)
|
970 | 978 |
|
971 |
| -. |
| 979 | +RegEx neboli regulární exprese (výrazy) jsou určené k hledání `vzorů` v textu (`string`). Lze je iu využít k ověřování vstupů. Zapisují se pomocí `/` na začátku a na konci, vše mezi lomítky je vyhledávaný výraz, lze tam mít znaky (a,b,c.. 1,2,3.. apod.) a pak tam jsou znaky co mají nějaké speciální využití (k nim později). |
| 980 | + |
| 981 | +```js |
| 982 | +let RegEx = /abc/ |
| 983 | +let RegEx1 = /car/ |
| 984 | +``` |
| 985 | + |
| 986 | +## metody a využití RegEx |
| 987 | + |
| 988 | +RegEx mají metody, které nám pomáhají hledat vzory, upravovat vstupy atd. Jedena z nejčastější metod je `.test()`, která "zkouší" jestli ten vstup v závorkách je pravdivý pro ten specifický RegEx. |
| 989 | + |
| 990 | +```js |
| 991 | +let regex = /abc/ |
| 992 | +console.log(regex.test("acd")) //výstup: false |
| 993 | +console.log(regex.test("abc")) //výstup: true |
| 994 | +``` |
| 995 | + |
| 996 | +## match() |
| 997 | + |
| 998 | +Další metodou je `.match()`, který hledá text podle RegEx a vrací pole s výsledky nebo `null` když nic nenajde. |
| 999 | + |
| 1000 | +```js |
| 1001 | +let vstup = "Je toto ale krásný den" |
| 1002 | +let regex = /ale/ |
| 1003 | +console.log(vstup.match(regex)) |
| 1004 | +//[ 'ale', index: 8, input: 'Je toto ale krásný den', groups: undefined ] |
| 1005 | +``` |
| 1006 | + |
| 1007 | +## replace() |
| 1008 | + |
| 1009 | +Metoda `replace()` nahradí první nebo všechny výskyty, které odpovídají RegEx. |
| 1010 | + |
| 1011 | + |
| 1012 | +```js |
| 1013 | +let regEx = /koala/ |
| 1014 | +let vstup = "koala je zajímavé zvíře, koala.." |
| 1015 | +console.log(vstup.replace(regEx, "kočka")) |
| 1016 | +//výstup: "kočka je zajímavé zvíře, koala.." |
| 1017 | +``` |
| 1018 | + |
| 1019 | +Pokud chceme nahradit všechny výskyty můžeme použít `g` na konci RegEx. |
| 1020 | + |
| 1021 | +```js |
| 1022 | +let regEx = /koala/g |
| 1023 | +let vstup = "koala je zajímavé zvíře, koala.." |
| 1024 | +console.log(vstup.replace(regEx, "kočka")) |
| 1025 | +//výstup: "kočka je zajímavé zvíře, kočka.." |
| 1026 | +``` |
| 1027 | + |
| 1028 | +## search() |
| 1029 | + |
| 1030 | +Metoda `search()` vrací první index prvního výskytu nebo `-1`, jestli tam není to co hledá. |
| 1031 | + |
| 1032 | +```js |
| 1033 | +let regEx = /den/ |
| 1034 | +let vstup = "dneska je krásný den" |
| 1035 | +console.log(vstup.search(regEx)) // výstup: 17 |
| 1036 | +``` |
| 1037 | + |
| 1038 | +Příklad kdy se nenajde nic ve vstupu. |
| 1039 | + |
| 1040 | +```js |
| 1041 | +let regEx = /pes/ |
| 1042 | +let vstup = "dneska je krásný den" |
| 1043 | +console.log(vstup.search(regEx)) // výstup: -1 |
| 1044 | +``` |
| 1045 | + |
| 1046 | +## shrnutí metod pro RegEx |
| 1047 | + |
| 1048 | +|metoda|význam|return| |
| 1049 | +|:---------|:--------|:---------| |
| 1050 | +|match()|hledá shodu textu s RegEx|výsledek (pole) nebo `nul`| |
| 1051 | +|replace()|nahradí text podle RegEx|řetězec s nahrazením podle RegEx| |
| 1052 | +|search()|hledá první výskyt|index výskytu nebo `-1`| |
| 1053 | + |
| 1054 | +## Speciální znaky pro RegEx |
| 1055 | + |
| 1056 | +Speciální znaky nám umožňují vyhledávat speciální sekvence znaků, můžeme díky nim přiblížit naše hledání ještě blíž. |
| 1057 | + |
| 1058 | +|znak|význam|příklad*y| |
| 1059 | +|:----|:----|:-----| |
| 1060 | +|`.`|tento znak znamená jakýkoliv až na nový řádek|`/a.a/` -> `aba`, `ada`..| |
| 1061 | +|`^`|tento znak znamená že to co za ním následuje je na začátku řetězce|`/^ahoj/` -> `"ahoj kamarádi"` == `true`, `"něco ahoj"` == `false`| |
| 1062 | +|`$`|tento znak znamená že to co je předním je na konci řetězce|`/ahoj$/` -> `"světe ahoj"` == `true`,`"ahoj světe"` == `false`| |
| 1063 | +|`*`|tento znak znamená že znak předním se může opakovat 0 nebo více opakování (jiný znak udělá false)|`/ho*/` -> `"ho"`, `"h"`, `"hoo"`, `"ho7485"` == všechny `true`, `"he"`, `"hi"` == všechny `false`| |
| 1064 | +|`+`|tento znak znamená že znak předním se musí opakovat minimálně jednou|`/ho+/` -> `"ho"`, `"hoo"` .. == všechny `true`, `"h"` == `false`| |
| 1065 | +|{n}| má přesně `n` počet opakování|`/o{2}/` -> `"oo"` == `true`, ostatní `false`| |
| 1066 | +|{n,}|má alespoň `n` opakování|`/o{2,}/` -> `"oo"`, `"ooo"` == všechny `true`, ostatní `false`| |
| 1067 | +|{n,m}|je tam mezi `n` a `m` opakování|`/o{2,3}/` -> `"oo"` a `"ooo"` true, ostatní `false`| |
| 1068 | +|\ |tento znak nám dělá možné využít znaky bez jejich významu v RegEx|`/\./` -> `"."` ´´ `true`, ostatní `false`| |
| 1069 | + |
| 1070 | +## pokročilé regEx znaky |
| 1071 | + |
| 1072 | +|znak|význam|příklad*y| |
| 1073 | +|:---|:---|:---| |
| 1074 | +|\d|jakékoliv číslo `0-9`|`/\d/` -> `"123"` == `true` `"abc"` == `false`| |
| 1075 | +|\D|jakékoliv znaky až na čísla|`/\D/` -> `"abc"` == `true`, `"132"` == `false` | |
| 1076 | +|\w|alfanumerické znaky (`a-z`, `A-Z`, `0-9`, `_`)|`/\w+/` -> `"kočka_4554534"` == true| |
| 1077 | +|\W|jakékoliv znaky až na alfanumerické|`/\W/` -> `"@&#"` == `true`, `"abcd"` == `false`| |
| 1078 | +|\s|mezera, tab nebo nové řádky (white space)|`/\s/` -> `" "` == `true`| |
| 1079 | +|\S|jakékoliv znaky mimo mezery, tab nebo nové řádky (white space)|`/\S+/` -> `"nějaký string"` == `true`| |
| 1080 | +|\b|hranice slova|`/\bkat\b/` -> `"kat"` == `true`, `"kategorie"` == `false`| |
| 1081 | +|\B|nehranice slova|`/\bkat\b/` -> `"kategorie"` == `true`, `"kat"` == `false`| |
972 | 1082 |
|
973 | 1083 | # OOP (Objektově Orientované Programování)
|
974 | 1084 |
|
|
0 commit comments