Utilia

Regex testētājs

Pārbaudiet JavaScript regulārās izteiksmes uzreiz: izceltas atbilsmes, tveršanas grupas, aizvietošana un katras daļas skaidrojums vienkāršā valodā.

Karodziņi

Atbilsmes
#PozīcijaAtbilsmeGrupas

Izteiksmes skaidrojums

    Kā lietot regex testētāju

    1. Ierakstiet izteiksmi laukā Regulāra izteiksme bez apkārtējām slīpsvītrām. Slīpsvītras un aktīvie karodziņi tiek rādīti ap lauku, kā /pattern/g.
    2. Atzīmējiet nepieciešamos Karodziņi: g (globāls), i (ignorēt reģistru), m (daudzrindu), s (dotAll), u (unicode) vai y (lipīgs).
    3. Ielīmējiet meklējamo tekstu laukā Testa teksts. Atbilsmes tiek izceltas rakstīšanas laikā, un tabulā katra atbilsme ir uzskaitīta ar pozīciju un tveršanas grupām.
    4. Lai izmēģinātu aizvietošanu, aizpildiet Aizstājējteksts. Lodziņā Rezultāts pēc aizvietošanas redzams teksts, kurā katra atbilsme aizstāta, gatavs kopēšanai.
    5. Izlasiet Izteiksmes skaidrojums, lai pārbaudītu, ko dara katra regex daļa. Nezināt, ar ko sākt? Noklikšķiniet uz Ielādēt piemēru.

    Ko rāda testētājs

    • Izceltas atbilsmes: katra atbilsme testa tekstā ir atzīmēta, tāpēc uzreiz redzams, kas tiek atrasts un kas netiek.
    • Atbilsmju tabula: katras atbilsmes numurs, tās pozīcija (rakstzīmju nobīde no sākuma, skaitot no 0), atbilstošais teksts un katras tveršanas grupas vērtība. Nosauktas grupas, piemēram, (?<year>\d{4}), parādās ar savu nosaukumu, bet grupas, kas atbilsmē nepiedalījās, tiek rādītas kā „(nav atbilsmes)“. Tiek uzskaitītas pirmās 1000 atbilsmes.
    • Aizvietošana: aizstājējtekstā izmanto JavaScript sintaksi: $1 vai $2 numurētām grupām, $<name> nosauktām grupām, $& visai atbilsmei un $$ burtiskai dolāra zīmei. Bez karodziņa g tiek aizstāta tikai pirmā atbilsme.
    • Skaidrojums: izteiksme tiek sadalīta marķieros (burtiskais teksts, rakstzīmju klases, enkuri, grupas, kvantifikatori, apskates, atsauces uz grupām), katram ar īsu aprakstu. Ligzdotas grupas ir ievilktas, kas ļoti atvieglo garu izteiksmju pārskatīšanu.

    Karodziņi īsumā

    Karodziņš Iedarbība
    g Atrod visas atbilsmes, nevis apstājas pie pirmās
    i Ignorē atšķirību starp lielajiem un mazajiem burtiem
    m ^ un $ atbilst katras rindas sākumam un beigām
    s . atbilst arī rindu pārtraukumiem
    u Pilns Unicode režīms: \u{…}, \p{…} un emocijzīmes tiek apstrādātas kā viena rakstzīme
    y Lipīgs: katrai atbilsmei jāsākas tieši tur, kur beidzās iepriekšējā

    Katastrofāla atkāpšanās

    Dažas izteiksmes tekstam, kas gandrīz atbilst, prasa eksponenciālu laiku. Klasisks piemērs ir (a+)+$, ko testē pret garu a virkni, kurai seko b: dzinējs izmēģina katru veidu, kā sadalīt a starp diviem kvantifikatoriem, pirms padodas. Šī problēma, saukta par ReDoS, ir apturējusi īstas vietnes.

    Šis rīks aizsargā jūsu pārlūkprogrammu trīs veidos. Meklēšana notiek fona darbiniekā, kas tiek apturēts pēc 1,5 sekundēm; testa teksts ir ierobežots līdz 100 000 rakstzīmēm; un skaidrojums brīdina, ja atkārtotā grupā ir cits neierobežots kvantifikators. Ja izteiksmei iestājas noildze, pārrakstiet to tā, lai katru rakstzīmi varētu atrast tikai vienā veidā, piemēram, a+$ (a+)+$ vietā.

    Biežāk uzdotie jautājumi

    Kuru regex variantu šis rīks izmanto?

    Tas izmanto jūsu pārlūkprogrammas JavaScript (ECMAScript) dzinēju tieši tā, kā to darītu new RegExp() un String.prototype.replace() jūsu kodā. Lielākā daļa sintakses sakrīt ar PCRE, Python un Java, taču daži elementi atšķiras: īpašnieciskie kvantifikatori un atomārās grupas JavaScript nepastāv, bet apskate atpakaļ tiek atbalstīta visās mūsdienu pārlūkprogrammās.

    Kāpēc mana izteiksme atrod tikai vienu atbilsmi?

    Karodziņš g ir izslēgts. Bez tā JavaScript apstājas pēc pirmās atbilsmes, un aizvietošana maina tikai to.

    Kā atrast burtisku punktu, iekavu vai jautājuma zīmi?

    Izsargājiet to ar atpakaļvērsto slīpsvītru: \., \[, \?. Skaidrojums izsargātās rakstzīmes rāda kā „(izsargāta)“, lai varētu pārbaudīt.

    Vai mans teksts tiek kaut kur sūtīts?

    Nē. Izteiksme un teksts tiek apstrādāti tikai jūsu pārlūkprogrammā, tāpēc šis rīks ir drošs žurnālfailiem vai datiem ar personas informāciju.

    Kāpēc pozīcija atšķiras no kolonnas manā redaktorā?

    Pozīcijas skaita rakstzīmes no 0 pa visām rindām, kā to dara JavaScript match.index. Rindu pārtraukumi skaitās kā viena rakstzīme, bet emocijzīme ārpus pamata daudzvalodu plaknes skaitās kā divas.