- [Case Studies](/kategorie/case-studies)
- [E‑commerce tipy](/kategorie/e-commerce-tipy)
- [E‑shopové riešenia a platformy](/kategorie/e-shopove-riesenia-platformy)
- [Mergado Pack](/kategorie/mergado-pack)
- [Mergado tipy](/kategorie/mergado-tipy)
- [Novinky v Mergade](/kategorie/novinky-v-mergade)
- [Novinky z porovnávačov cien](/kategorie/novinky-z-porovnavacov-cien)
- [Pracujeme s Mergadom](/kategorie/pracujeme-s-mergadom)
- [Rozhovory](/kategorie/rozhovory)
- [Rozšírenia](/kategorie/aplikacie)
- [S Mergadom do zahraničia](/kategorie/s-mergadom-do-zahranicia)
- [Zo života Mergada](/kategorie/zo-zivota-mergada)
 



 

 1. [  Domov  ](/)
2. [     Blog  ](/blog)
3. [     Pracujeme s Mergadom  ](/kategorie/pracujeme-s-mergadom)
4. <a class="flex items-center gap-2 hover:underline" href="" itemid="" itemprop="item" itemscope="" itemtype="https://schema.org/Thing">    **Ako na regulárne výrazy v Mergade — II. diel** </a>
 
  

 

#  **Ako na regulárne výrazy v Mergade — II. diel** 

 

 

 [    ![](https://www.mergado.sk/sites/default/files/perm/image/luda_0.png)   Luděk Volejník  ](/blog/ludek-volejnik) [Pracujeme s Mergadom](/kategorie/pracujeme-s-mergadom) 

27. 10. 2016

3 minúty čítania

 

 

 

 

 

  ![](https://www.mergado.sk/sites/default/files/field/image/clanok-regexp-vol2.png)  

V [úvodnom dieli](http://www.mergado.sk/serial-regularne-vyrazy-1) našej minisérie o regulárnych výrazoch sme sa venovali tomu, čo to vôbec sú regulárne výrazy a vysvetlili sme použite niektorých základných značiek. Teraz na tento úvod nadviažeme a predstavíme si ďalšie značky a ich praktické využitie.



 

 

 
                function tableOfContents() {
                  return {
                    headings_menu: [],
                    heading_active: '', // Added to track the active section
                    shouldBeSticky: false,

                    generateToC() {
                      const headings = document.querySelectorAll('.js-article-full-headings h2, .js-article-full-headings h3');
                      let headingMap = {};

                      headings.forEach((heading) => { // Use an arrow function to maintain `this` context
                        // Normalize heading text to remove diacritics, then replace non-alphanumeric characters with dashes
                        var normalizedText = heading.textContent.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); // Remove diacritics
                        var id = heading.id ? heading.id : normalizedText.trim().toLowerCase()
                          .split(' ').join('-').replace(/[^a-z0-9\-]/ig, ''); // Updated regex to replace non-alphanumeric characters
                        headingMap[id] = headingMap[id] !== undefined ? ++headingMap[id] : 0;

                        // Use the updated `id` with diacritics removed for the heading id and the TOC
                        const finalId = headingMap[id] ? `${id}-${headingMap[id]}` : id;
                        this.headings_menu.push({
                          id: finalId,
                          title: heading.textContent,
                          level: heading.tagName.toLowerCase(), // Track heading level
                          active: false, // Initially set active to false
                        });
                        heading.id = finalId;
                      });
                    },

                    checkStickyNeeded() {
                      const ul = this.$el.querySelector('ul');
                      if (ul) {
                        this.shouldBeSticky = ul.scrollHeight < window.innerHeight;
                      }
                    },

                    setActiveHeading() {
                      // disabled not working with active state on click
                      // add @scroll.window="setActiveHeading()" to the parent div

                      // const headings = document.querySelectorAll('.js-article-full-headings h2');
                      // let activeHeading = '';
                      // let closestHeadingDistance = Infinity;

                      // headings.forEach((heading) => {
                      //   const rect = heading.getBoundingClientRect();
                      //   const offset = rect.top - window.innerHeight / 2; // Consider heading in the middle of the screen as active

                      //   if (offset < 0 && Math.abs(offset) < closestHeadingDistance) {
                      //     activeHeading = heading.id;
                      //     closestHeadingDistance = Math.abs(offset);
                      //   }
                      // });

                      // // Update the active state in headings_menu
                      // if (activeHeading !== this.heading_active) {
                      //   this.headings_menu = this.headings_menu.map(item => ({
                      //     ...item,
                      //     active: item.id === activeHeading,
                      //   }));
                      //   this.heading_active = activeHeading;

                      // }
                    },

                    setActiveItem(clickedId) {
                      this.headings_menu.forEach(item => {
                        item.active = (item.id === clickedId);
                      });
                      this.heading_active = clickedId; // Optionally update the heading_active property if used
                    },
                  };
                }
               1. <a :class="{ 'border-r-[3px] border-secondary': item.active, 'text-sm': item.level === 'h3' }" :href="'#' + item.id" class="inline-block text-balance hover:underline p-0.5 pr-3">  — </a>
  



 

## Zátvorky

**Hranaté zátvorky \[\]**  
   
Hranaté zátvorky pomôžu s výberom takého textu, v ktorom sa vyskytuje jeden zo skupiny znakov, ktorú zadáme, teda napríklad:

- Chceme nájsť všetky produkty, ktoré majú v názve **nejaké číslo**, použijeme regulárny výraz **\[0 – 9\].** (Alternatívou je potom použitie výrazu **\\d**, ktorý v regulárnych výrazoch predstavuje akúkoľvek číslicu), teda: **PRODUCTNAME** ~ obsahuje reg.výraz **\[0 – 9\]** alebo **PRODUCTNAME** ~ obsahuje reg.výraz **\\d**
- Hľadáme všetky produkty, ktoré majú v názve **dvojciferné číslo**, použijeme regulárny výraz \[0 – 9\] \[0 – 9\] (Alebo to isté zaistí použitie: **\\d\\d**)
- Chceme nájsť všetky produkty, ktoré majú v názve nejakej **písmeno z nasledujúcej množiny** písmen: b, f, l, m, použijeme regulárny výraz **\[bflm\]**

![Hranaté zátvorky](/sites/default/files/users/hranate_zavorky_1.png)

**Okrúhle zátvorky ()**

Okrúhle zátvorky umožňujú vyhľadávať v reťazci **rôzne tvary jedného slova**, pričom vyhľadajú všetky časti reťazca, v ktorých sa vyskytuje buď časť pred zátvorkou alebo celý výraz.

- Chceme nájsť všetky produkty, ktoré majú v **názve pneu alebo pneumatika**, použijeme regulárny výraz **pneu(matika)?** (Vysvetlenie znaku **?** sme uviedli [v minulom článku](http://www.mergado.sk/serial-regularne-vyrazy-1#otaznik))

![Okrúhle zátvorky](/sites/default/files/users/kulate_zavorky_1.png)

**Zložené zátvorky {}**  
   
Zložené zátvorky patria medzi **kvantifikátory** — určujú teda, **koľkokrát sa dané písmeno alebo reťazec písmen v hľadanom texte vyskytuje.** Napríklad:

- Chceme nájsť všetky produkty, ktoré majú v názve **písmeno A trikrát za sebou, použijeme regulárny výraz A{3}**
- Chceme nájsť všetky produkty, ktoré majú v názve **písmeno A najmenej raz, maximálne dvakrát za sebou, použijeme regulárny výraz A{1,2}**
- Chceme nájsť všetky produkty, ktoré majú v názve **písmeno A dva a viackrát za sebou, použijeme regulárny výraz A{2,}** — napríklad u módy tak môžeme vytvoriť výber pre najväčšie veľkosti (XXL a väčšie)

![Zložené zátvorky](/sites/default/files/users/slozene_zavorky_0.png)

## Hraničné značky

**Strieška ^**  
   
Pomocou tejto značky vyhľadávame na **začiatku reťazca:**

- Chceme nájsť všetky produkty, ktorých **názov začína číslom** (tj. prvým znakom v názve produktu je číslo), použijeme regulárny výraz **^\[0 – 9\]** alebo **^\\d**
- Chceme nájsť všetky produkty, ktorých **názov začína medzerou** (tj. prvým znakom v názve produktu je medzera), použijeme regulárny výraz **^\\s**
- Chceme nájsť všetky produkty, ktorých **názov začína slovom Novinka** (tj. v názve produktu je hneď na začiatku slovo “Novinka”), použijeme regulárny výraz **^Novinka**

![Strieška](/sites/default/files/users/striska_0_0.png)

**Dolár $**  
   
S pomocou “dolára” vyhľadávame požadované znaky na **konci reťazca:**

- Chceme nájsť **všetky produkty, ktorých názov končí číslom** (tj. Posledným znakom v názve produktu je číslo), použijeme regulárny výraz **\[0 – 9\]$** alebo **\\d$**
- Chceme nájsť **všetky produkty, ktorých názov končí medzerou** (tj. Posledným znakom v názve produktu je medzera), použijeme regulárny výraz **\\s$**
- Chceme nájsť **všetky produkty, ktorých názov končí slovom Novinka** (tj. V názve produktu je úplne na konci “Novinka”), použijeme regulárny výraz **Novinka$**

**Tip:** Dolár na klávesnici napíšete napr. cez klávesovú skratku **pravý Alt + ô.**

![Strink alebo znak dolár](/sites/default/files/users/string_0.png)

**Zvislá čiara** |  
   
Táto značka **funguje podobne ako operátor OR**, slovensky by sme povedali “alebo” — vyhľadá teda také položky, v ktorých sa vyskytuje **jeden alebo druhý** (tretí, štvrtý, piaty…) zo zadaných výrazov, teda:

- ak chceme nájsť **všetky produkty, ktorých názov obsahuje veľkosť alebo objem** (tj. kdekoľvek v názve produktu bude jeden alebo druhý hľadaný výraz), použijeme regulárny výraz **Veľkosť|Objem**

![Zvislá čiara](/sites/default/files/users/svislitko_1.png)

**Znak “s” so spätným lomítkom \\s**  
   
Pomocou tohto znaku dokážeme **vyhľadávať, a následne napríklad odstrániť medzery** (a ďalšie biele znaky akými sú tabulátory alebo nezalomitelné medzery), môže sa nám teda hodiť pri:

- Hľadaní všetkých produktov, ktorých **názov obsahuje konkrétny viacslovné text:** *“Objem100ml”*. K tomu použijeme regulárny výraz **Objem\\S100\\sml**
- Odhaľovanie práve dvoch medzier vedľa seba, kedy použijeme regulárny výraz **\\s\\s**
- K vyhľadávaniu r**ôzneho počtu medzier je potom efektívnejšie použiť výraz s kvantifikátorom plus** (pozri [predchádzajúci článok](http://www.mergado.sk/serial-regularne-vyrazy-1#plus)) **\\s+**, ktorý odhalí minimálne jednu a maximálne nekonečno medzier za sebou.

![Spätné lomítko](/sites/default/files/users/zpetne_lomitko.png)

Tip: v Mergade pri regulárnych výrazoch **nezáleží na tom, či hľadáte text zadaný malými alebo veľkými písmenami.** Keď budete hľadať slovo “Veľkosť”, nájde sa: “Veľkosť”, “veľkosť” alebo napríklad aj “veľkosť”.

V ďalšom dieli seriálu sa už môžete tešiť na konkrétne kombinácie a riešenia zložitejších výberov v Mergade pomocou regulárnych výrazov.



 

- [  Regulárne výrazy ](/tema/regularne-vyrazy)
 
 [    ![](https://www.mergado.sk/sites/default/files/perm/image/luda_0.png)  ](/blog/ludek-volejnik)###  [ Luděk Volejník ](/blog/ludek-volejnik) 

Senior konzultant Mergada Luďek pôsobil **v oblasti e‑commerce vyše 15 rokov**. Ostrieľaný support master a lektor vás viedol zákutiami Mergada aj svetom regulárnych výrazov. Na svojom konte má **stovky vyškolených užívateľov Mergada**, ktorí sa stali uznávanými odborníkmi na feed marketing, PPC a SEO.

 

 

 

 

 

 

 

 

 

## Mohlo by vás *zaujímať*

 

 [    ![](https://www.mergado.sk/sites/default/files/perm/image/shoptet_shopify_sk.jpg)  

### Ako sme s Mergadom previedli e‑shop zo Shoptetu na Shopify: kompletná migrácia bez straty dát

 

 ](/blog/ako-sme-s-mergadom-previedli-e-shop-zo-shoptetu-na-shopify-kompletna-migracia-bez-straty-dat) 

 [    ![nastavenie uživatelských účtov](https://www.mergado.sk/sites/default/files/perm/image/new-nahladovka-na-blog-1200-x-628-px-38.png)  

### Ako nastavovať užívateľské účty agentúrnych pracovníkov v Mergade

 

 ](/blog/opravnenie-uzivatelskych-uctov-pre-agentury) 

 [    ![produktový feed 5 najčastějších cýb](https://www.mergado.sk/sites/default/files/perm/image/new-nahladovka-na-blog-1200-x-628-px-19_0.png)  

### 5 najčastejších chýb v produktovom feede a ako ich upraviť v Mergade

 

 ](/blog/najcastejsie-chyby-v-produktovom-feede) 

 

 

 

## Nenechajte si nič *ujsť*

 Prihláste sa k odberu nášho newslettera 

   

       

   Prihlásením súhlasíte s tým, že vaše údaje budeme spracovávať v súlade s našimi [zásadami ochrany osobných údajov](/vyhlasenie-o-cookies). 

  Ďakujeme, úspešne ste sa pripojili k nášmu zoznamu odberateľov. 

 

 

 
      function ml_webform_success_5807248() {
        var r = ml_jQuery || jQuery
        r('.ml-subscribe-form-5807248 .row-success').show(), r('.ml-subscribe-form-5807248 .row-form').hide()
      }