Utilia

Testues regex

Testo shprehje të rregullta JavaScript drejtpërdrejt me përputhje të theksuara, grupe kapëse, zëvendësim dhe një shpjegim të thjeshtë të çdo token-i të modelit.

Flamurët

Përputhjet
#PozicioniPërputhjaGrupet

Shpjegimi i modelit

    Si ta përdorësh testuesin e regex

    1. Shkruaj modelin te Shprehja e rregullt, pa vijat e pjerrëta rreth tij. Vijat dhe flamujt aktivë shfaqen rreth fushës, si te /pattern/g.
    2. Shëno Flamurët që të duhen: g (global), i (injoro shkronjat e mëdha/vogla), m (shumërreshtor), s (dotAll), u (unicode) ose y (ngjitës).
    3. Ngjit tekstin për të kërkuar te Teksti provë. Përputhjet theksohen ndërsa shkruan, dhe tabela liston çdo përputhje me pozicionin dhe grupet kapëse të saj.
    4. Për të provuar një zëvendësim, plotëso Zëvendësimi. Kutia Rezultati pas zëvendësimit tregon tekstin me çdo përputhje të zëvendësuar, gati për kopjim.
    5. Lexo Shpjegimin e modelit për të kontrolluar çfarë bën çdo pjesë e regex-it tënd. S’e di nga ta nisësh? Kliko Ngarko një shembull.

    Çfarë shfaq testuesi

    • Përputhjet e theksuara: çdo përputhje në tekstin provë shënohet, ndaj e sheh me një shikim çfarë kapet dhe çfarë mbetet jashtë.
    • Tabela e përputhjeve: numri i çdo përputhjeje, pozicioni i saj (zhvendosja në karaktere nga fillimi, duke numëruar nga 0), teksti i përputhur dhe vlera e çdo grupi kapës. Grupet me emër si (?<year>\d{4}) shfaqen me emrin e tyre, dhe grupet që nuk morën pjesë në përputhje shfaqen si “(nuk u përputh)”. Listohen 1 000 përputhjet e para.
    • Zëvendësimi: teksti zëvendësues përdor sintaksën e JavaScript: $1 ose $2 për grupet e numëruara, $<name> për grupet me emër, $& për gjithë përputhjen dhe $$ për një shenjë dollari literale. Pa flamurin g, zëvendësohet vetëm përputhja e parë.
    • Shpjegimi: modeli ndahet në token-e (tekst literal, klasa karakteresh, ankora, grupe, kuantifikues, lookaround, referenca prapa), secili me një përshkrim të shkurtër. Grupet e ndërthurura janë me zhvendosje, gjë që i bën modelet e gjata shumë më të lehta për t’u shqyrtuar.

    Flamujt shkurt

    Flamuri Efekti
    g Gjen të gjitha përputhjet në vend që të ndalojë te e para
    i Injoron dallimin mes shkronjave të mëdha dhe të vogla
    m ^ dhe $ përputhen në fillim dhe në fund të çdo rreshti
    s . përputh edhe ndarjet e rreshtit
    u Modaliteti i plotë Unicode: \u{…}, \p{…} dhe emoji trajtohen si karaktere të vetme
    y Ngjitës: çdo përputhje duhet të fillojë saktësisht ku mbaroi e mëparshmja

    Backtracking katastrofik

    Disa modele marrin kohë eksponenciale mbi tekst që përputhet pothuajse. Shembulli klasik është (a+)+$ i testuar mbi një varg të gjatë a që mbaron me b: motori provon çdo mënyrë të ndarjes së a-ve mes dy kuantifikuesve para se të heqë dorë. Ky problem, i njohur si ReDoS, ka rrëzuar faqe të vërteta uebi.

    Ky mjet e mbron shfletuesin tënd në tri mënyra. Përputhja ekzekutohet në një worker në sfond që ndalet pas 1,5 sekondash; teksti provë kufizohet në 100 000 karaktere; dhe shpjegimi të paralajmëron kur një grup i përsëritur përmban një kuantifikues tjetër pa kufi. Kur një model kalon kohën, rishkruaje që çdo karakter të përputhet vetëm në një mënyrë, për shembull a+$ në vend të (a+)+$.

    Pyetje të shpeshta

    Cilin lloj regex përdor ky mjet?

    Përdor motorin JavaScript (ECMAScript) të shfletuesit tënd, saktësisht si new RegExp() dhe String.prototype.replace() në kodin tënd. Pjesa më e madhe e sintaksës ndahet me PCRE, Python dhe Java, por disa veçori ndryshojnë: kuantifikuesit posesivë dhe grupet atomike nuk ekzistojnë në JavaScript, ndërsa lookbehind mbështetet në të gjithë shfletuesit aktualë.

    Pse modeli im gjen vetëm një përputhje?

    Flamuri g është i fikur. Pa të, JavaScript ndalon pas përputhjes së parë, dhe zëvendësimi ndryshon vetëm atë.

    Si ta përputh një pikë, kllapë ose pikëpyetje literale?

    Vendos para saj një vijë të pjerrët të prapme: \., \[, \?. Shpjegimi i shfaq karakteret e escape-uara si “(me escape)”, ndaj mund ta kontrollosh.

    A dërgohet teksti im diku?

    Jo. Modeli dhe teksti përpunohen vetëm në shfletuesin tënd, gjë që e bën këtë mjet të sigurt për skedarë log ose të dhëna me informacion personal.

    Pse pozicioni ndryshon nga kolona në editorin tim?

    Pozicionet numërojnë karakteret nga 0, nëpër të gjitha rreshtat, siç bën match.index i JavaScript. Ndarja e rreshtit llogaritet një karakter, dhe një emoji jashtë Basic Multilingual Plane llogaritet dy.