Pansubok ng Regex

Files at data

Subukan ang pattern: bawat tugma, grupo at preview ng palit.

Mga tugma
3
3 group · 1 may pangalan
Tugma
3
Mga grupo
3
Mga pinangalanang grupo
1
Bawat tugma
linya 1 · sa 50917 555 1234
$1: 0917
$2: 555
$3: 1234
$<area>: 0917
linya 1 · sa 220918-555-9876
$1: 0918
$2: 555
$3: 9876
$<area>: 0918
linya 2 · sa 560922 555 0000
$1: 0922
$2: 555
$3: 0000
$<area>: 0922

Paano gamitin

Para saan ito

Subukan ang regular expression — pattern ng paghahanap na ginagamit sa code at sa ilang spreadsheet — sa halimbawang teksto, at makita kung ano mismo ang tinutugma nito bago mo ito asahan.

Bago magsimula

Ihanda ang pattern na susubukan, at halimbawang teksto na dapat tumugma at hindi dapat tumugma. Tumatakbo ito sa browser mo, sa parehong patakaran ng pattern ng JavaScript.

  1. I-type ang pattern

    I-type ito sa Pattern nang walang slash sa paligid: \d+, hindi /\d+/. Hinahanap ng halimbawa ang mga mobile number sa Pilipinas; palitan ito ng sa iyo.

  2. I-on o i-off ang mga flag

    Mga flag ang mga button na titik sa ilalim nito; itapat ang pointer sa isa para makita ang ginagawa nito. Hinahanap ng g ang bawat tugma at hindi lang ang una, hindi pinapansin ng i ang malalaking titik, pinapagana ng m ang ^ at $ sa bawat linya, at pinapatawid ng s ang tuldok sa line break.

  3. I-paste ang tekstong susubukan

    I-paste ang halimbawa mo sa Subukan laban sa. Para makita ang papalit, i-type ito sa Palitan ng — opsyonal; ibinabalik ng $1 ang nakuha ng unang group.

  4. Subukan at basahin ang mga tugma

    Pindutin ang Subukan para makita ang sagot; nagbabago rin ito habang nagta-type ka. Saka basahin ang listahang Bawat tugma sa ilalim nito.

Pagbasa ng resulta

  • Mga tugma: kung ilang beses tumugma ang pattern. Binibilang ng Mga grupo at Mga pinangalanang grupo ang mga bracket sa pattern mo na kumukuha ng teksto.
  • Bawat tugma: bawat tugma kasama ang linya at posisyon nito sa teksto, saka ang nakuha ng bawat group bilang $1, $2 at iba pa. Ibig sabihin ng hindi lumahok, walang bahagi ang group na iyon sa tugmang ito — iba iyon sa walang nakuha.
  • Pagkatapos palitan: ang buong teksto na nailapat na ang kapalit mo. Lumalabas lang ito kapag may laman ang Palitan ng — opsyonal.

Kung may problema

  • Iisang tugma lang ang lumalabas: naka-off ang g flag. I-on ito para makita ang bawat tugma.
  • Humihinto ang tugma sa dulo ng linya: hindi tumatawid ang tuldok sa line break maliban kung naka-on ang s. Iba ang gamit ng m.
  • Nag-freeze ang pahina, o may babalang bumabanggit sa (a+)+: may pag-uulit sa loob ng isa pang pag-uulit ang pattern, na puwedeng tumagal nang napakatagal sa tekstong halos tumutugma. Isulat ulit ang bahaging iyon, o isara ang tab kung natigil na ito.

Ano ito

Tatlo sa anim na flag ang madalas na hindi maintindihan, kaya nakasulat sila sa pahina.

Ang hindi pinapatugma ng tuldok ang newline maliban kung nakabukas ang s. Ang inaabot ng karamihan ay m — pero ibang bagay iyon: binabago nito ang kahulugan ng ^ at $. Iyan ang pinakakaraniwang dahilan kung bakit humihinto ang pattern sa dulo ng linya.

Ang grupong hindi lumahok ay undefined, hindi blangko. Sa (a)|(b) laban sa b, hindi lumahok ang unang grupo — at ang tester na nagpi-print ng blangko doon ay nagsasabi ng mali. Doon mismo nakatira ang karamihan ng pagkalito sa isang pattern.

At ang catastrophic backtracking ay hindi mapipigilan dito. Walang paraan sa JavaScript para putulin ang tumatakbong pagtutugma. Ang totoo: tumatakbo ito sa browser MO, kaya ang pinakamasama ay mag-freeze ang tab na ito.

Mga tanong

Bakit humihinto ang pattern ko sa dulo ng linya?

Dahil hindi tinatamaan ng tuldok ang bagong linya maliban kung nakatakda ang s flag. Ang m ang inaabot ng marami, at ibang bagay iyon — binabago ng m kung ano ang ibig sabihin ng ^ at $, kaya tumatama sila sa bawat line break at hindi lang sa dulo ng buong teksto. Kung gusto mong tumawid ang tuldok sa bagong linya, ang s ang gusto mo.

Ano ang pagkakaiba ng may g flag at wala?

Kapag walang g ay ang unang tinamaan lang ang iniuulat ng pattern — iyon ang ibig sabihin ng hindi pandaigdig at hindi limitasyon ng pahinang ito. Kapag may g ay makukuha mo ang lahat. Mahalaga rin ito sa pagpapalit: ang hindi pandaigdig na replace ay binabago ang unang paglitaw at iniiwan ang iba.

Bakit may grupo akong ipinapakitang “hindi lumahok”?

Dahil talagang hindi ito lumahok. Sa pattern na tulad ng (a)|(b) na itinapat sa b, hindi kailanman lumahok ang grupo 1, at undefined ang halaga nito at hindi blangkong string. Karamihan sa tester ay walang inililimbag doon, na nagmumungkahing tumama ito sa kawalan — iba at nakakalito iyon. Kadalasan ay dito talaga nakatira ang pagkalito tungkol sa isang pattern.

Ano ang ibig sabihin ng “tumatama sa blangkong string”?

Na kayang tamaan ng pattern mo ang wala, kaya tumatama ito sa bawat puwesto sa pagitan ng mga karakter. Kadalasan ay quantifier na dapat sanang + ang naging *: tumatama ang \d* sa blangkong string kahit saan, samantalang kailangan ng \d+ ng kahit isang digit. Bihira itong gusto ninuman at madaling hindi mapansin, kaya sinasabi ito ng pahina.

Puwede bang mag-freeze ang browser ko dahil sa isang pattern?

Oo. Ang pattern na may quantifier sa loob ng isa pang quantifier — ang hugis ng (a+)+ — ay puwedeng maging exponential ang tagal sa input na halos tumatama. Walang inaalok ang JavaScript na paraan para putulin ang tumatakbong pagtutugma, kaya walang tool na tunay na makakapigil dito. Nililimitahan ng pahinang ito ang input, nililimitahan ang listahan ng tinamaan, at nagbababala kapag nakilala ang hugis. Sa browser mo ito tumatakbo, kaya ang pinakamasama ay ang pag-freeze ng tab na ito at hindi ang pagbagsak ng server.

Ginagamit ba nito ang parehong regex engine ng code ko?

Kung JavaScript ang code mo, oo — ginagamit nito ang sariling RegExp ng browser. Tunay na nagkakaiba ang ibang wika: nagkakaiba-iba ang lookbehind, ang anyo ng named group, ang possessive quantifier at ang ibig sabihin ng \b sa paligid ng letrang hindi ASCII. Subukin sa engine na talagang pagtatakbuhan mo bago umasa sa isang pattern.

Ipinapadala ba kahit saan ang teksto ko?

No. Everything is matched in your browser and nothing is transmitted or stored.

Ang komputasyon

Ang anim na flag
glahat ng tugma, hindi lang ang una
ihuwag pansinin ang malaki at maliit na titik
m^ at $ sa bawat linya
stinatawid na ng tuldok ang newline
ucode point, para gumana ang \p{L}
ysa lastIndex lamang

Ang m at s ang madalas na pinagpapalit. Magkaiba sila ng trabaho.

Ang hugis na sumasabog

Ang (a+)+ — quantifier sa loob ng quantifier — ay puwedeng maging exponential sa input na halos tumutugma. Binabalaan ito ng pahina at hindi tinatanggihan: baka tama naman ito sa input na hawak mo. Palatandaan ito, hindi garantiya.

Ituloy pa

Mahalaga

Runs in your browser using its own RegExp engine, so results match JavaScript. Other languages differ on lookbehind, named groups and word boundaries. A pattern nesting quantifiers can take exponential time and no tool can interrupt it — the warning is a hint, not a guarantee. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.