Utilia

Regex тестер

Тестирајте JavaScript регуларни изрази во живо: означени совпаѓања, групи за снимање, замена и објаснување на секој дел од изразот.

Знаменца

Совпаѓања
#ПозицијаСовпаѓањеГрупи

Објаснување на изразот

    Како да го користите regex тестерот

    1. Впишете го изразот во Регуларен израз, без околните коси црти. Косите црти и активните знаменца се прикажани околу полето, како во /pattern/g.
    2. Штиклирајте ги потребните Знаменца: g (глобално), i (игнорирај големи/мали букви), m (повеќе редови), s (dotAll), u (unicode) или y (sticky).
    3. Залепете го текстот што се пребарува во Текст за тестирање. Совпаѓањата се означуваат додека пишувате, а табелата го наведува секое совпаѓање со неговата позиција и групите за снимање.
    4. За да пробате замена, пополнете Замена. Полето Резултат по замената го покажува текстот со заменето секое совпаѓање, подготвен за копирање.
    5. Прочитајте го Објаснување на изразот за да проверите што прави секој дел од вашиот regex. Не знаете од каде да почнете? Кликнете Вчитај пример.

    Што покажува тестерот

    • Означени совпаѓања: секое совпаѓање во текстот за тестирање е означено, па со еден поглед гледате што е фатено, а што е пропуштено.
    • Табела на совпаѓања: бројот на секое совпаѓање, неговата позиција (поместување во знаци од почетокот, броејќи од 0), совпаднатиот текст и вредноста на секоја група за снимање. Именуваните групи како (?<year>\d{4}) се појавуваат под своето име, а групите што не учествувале во совпаѓањето се прикажуваат како „(нема совпаѓање)“. Наведени се првите 1.000 совпаѓања.
    • Замена: текстот за замена користи JavaScript синтакса: $1 или $2 за нумерирани групи, $<name> за именувани групи, $& за целото совпаѓање и $$ за буквален знак долар. Без знамето g се заменува само првото совпаѓање.
    • Објаснување: изразот е поделен на токени (литерален текст, класи знаци, сидра, групи, квантификатори, lookaround, повикувања назад), секој со кус опис. Вгнездените групи се вовлечени, што ги олеснува прегледот на долгите изрази.

    Знаменцата накратко

    Знаменце Ефект
    g Ги наоѓа сите совпаѓања наместо да запре на првото
    i Ја игнорира разликата меѓу големи и мали букви
    m ^ и $ совпаѓаат на почетокот и крајот на секој ред
    s . совпаѓа и прекини на ред
    u Целосен Unicode режим: \u{…}, \p{…} и емоџиња се обработуваат како еден знак
    y Sticky: секое совпаѓање мора да започне точно таму каде што завршило претходното

    Катастрофално враќање назад

    Некои изрази бараат експоненцијално време на текст што речиси совпаѓа. Класичен пример е (a+)+$ тестиран на долг низ од a проследен со b: машината ги пробува сите начини да ги подели a меѓу двата квантификатора пред да се откаже. Овој проблем, познат како ReDoS, веќе имал урнато вистински веб-сајтови.

    Оваа алатка го штити вашиот прелистувач на три начина. Совпаѓањето се извршува во работник во позадина што се запира по 1,5 секунди; текстот за тестирање е ограничен на 100.000 знаци; а објаснувањето ве предупредува кога повторена група содржи друг квантификатор без граница. Кога изразот ќе истече, препишете го така што секој знак може да се совпадне само на еден начин, на пример a+$ наместо (a+)+$.

    Често поставувани прашања

    Каков вид regex користи оваа алатка?

    Ја користи JavaScript (ECMAScript) машината на вашиот прелистувач, точно како new RegExp() и String.prototype.replace() во вашиот код. Поголемиот дел од синтаксата е заеднички со PCRE, Python и Java, но некои функции се разликуваат: посесивни квантификатори и атомски групи не постојат во JavaScript, а lookbehind е поддржан во сите современи прелистувачи.

    Зошто мојот израз наоѓа само едно совпаѓање?

    Знамето g е исклучено. Без него JavaScript запира по првото совпаѓање, а заменето се менува само тоа.

    Како да совпаднам буквална точка, заграда или прашалник?

    Ставете обратна коса црта пред него: \., \[, \?. Објаснувањето ги прикажува знаците со escape како „(со escape)“, па можете да проверите.

    Дали мојот текст се испраќа некаде?

    Не. Изразот и текстот се обработуваат само во вашиот прелистувач, па алатката е безбедна за лог датотеки или податоци што содржат лични информации.

    Зошто позицијата е различна од колоната во мојот уредник?

    Позициите ги бројат знаците од 0, низ сите редови, како што прави match.index во JavaScript. Прекинот на ред се брои за еден знак, а емоџи надвор од Основната повеќејазична рамнина се брои за два.