Ittestja espressjoni regolari
- Dashboard
- Dokumentazzjoni
- API
Għal xiex jintuża tester tal-espressjoni regolari?
Aregex tester jippermettilek li tiċċekkja li mudell ta' espressjoni regolari (regex) jaqbel
għat-test mistenni, mingħajr ma jkollok tniedi l-kodiċi tal-applikazzjoni. Aħna paste l-mudell, aħna paste-test input, aħna
iċċekkja l-għażliet (bnadar), u l-għodda immedjatament turi l-lista ta 'logħbiet misjuba
kif ukoll il-gruppi maqbuda. Dan huwa l-ekwivalenti onlajn ta' preg_match_all() fil-PHP, minn
String.matchAll() f'JavaScript jew re.findall() f'Python.
Regexes huma kemm qawwija kif ukoll delikati. Virgola, parentesi żbaljata, kwantifikatur glutton li jiġbed wisq karattri: u l-istring estratt m'għadux dak li stennejna. It-tester jevita l-vjaġġ bir-ritorn b'editur, terminal u fajl tat-test: aħna ntennu l-mudell sakemm naraw il- riżultat tajjeb.
Kif tikteb il-mudell?
Daħħal ir-reġexmingħajr delimitaturi. L-ebda /.../, l-ebda #...#.
Pereżempju, biex taqbad indirizzi tal-email mit-test, daħħal biss
[\w.+-]+@[\w-]+\.[\w.-]+. Għażliet (bnadar) huma kkontrollati minn kaxxi ta 'kontroll.
L-għażla u (Unicode) hija ċċekkjata awtomatikament. Kważi dejjem huwa mixtieq: mingħajrha,
\w ma jagħrafx aċċenti, u xi mudelli jirritornaw żball PCRE sieket
Kordi UTF-8.
Għażliet PCRE
- i (insensittiv għall-każ):
[a-z]jirrikonoxxi wkoll ittri kbar. - m (multiline):
^u$jaqblu mal-bidu u t-tmiem ta' kull linja, flimkien mal-bidu u t-tmiem biss tas-sekwenza ġenerali. - s (dotall):
.jirrikonoxxi wkoll il-qtugħ tal-linja. Utli għal mudelli li jridu jaqsmu l-paragrafi. - u (unicode): tinterpreta l-mudell u s-suġġett f'UTF-8. Essenzjali hekk kif it-test fih karattri mhux ASCII (aċċenti, emoji, ideogrammi).
Eżempji ta' Regex Komuni
- Indirizz elettroniku:
[\w.+-]+@[\w-]+\.[\w.-]+(forma simplifikata, biżżejjed għal l-aktar każijiet prattiċi; strett RFC 5322 huwa kumpless ħafna). - URL HTTP/HTTPS:
https?://[\w.-]+(?:/[\w./?%&=-]*)? - Numru tat-telefon Franċiż:
(?:\+33|0)\s?[1-9](?:[\s.-]?\d{2}){4} - Kodiċi postali Franċiż:
\d{5} - Data ISO (SSSS-XX-JJ):
\d{4}-\d{2}-\d{2} - indirizz IPv4:
(?:\d{1,3}\.){3}\d{1,3} - Kelma sħiħa:
foo(il-konfini tal-kliem jevitaw li jaqblufutbol). - Hashtag:
#\w+ - Numru tal-verżjoni semantika:
\d+\.\d+\.\d+(?:-[\w.-]+)? - Twitter ID / X:
@\w{1,15}
Gruppi maqbuda
Regex jista' jkun fih gruppi fil-parentesi, li jiżolaw porzjon tal-partita għall-użu mill-ġdid.
Pereżempju, il-mudell (\w+)@(\w+\.\w+) applikat għal alice@example.com jaqbad żewġ
gruppi: alice u example.com. L-għodda turi dawn il-gruppi f'kolonna
iddedikat, ħdejn kull partita. Gruppi msemmija ((?P) huma wkoll
elenkati, indiċjati bl-isem.
Biex tiggruppa mingħajr ma taqbad (utli biex jiġi applikat kwantifikatur mingħajr ma jniġġes il-lista ta 'gruppi), aħna
juża (?:...).
Protezzjoni kontra ReDoS
Il-magna PCRE tal-PHP tista' tidħol f'backtracking katastrofiku għal ċerti raġunijiet patoloġiċi:
mudell bħal (a+)+$ applikat għal string a twila mhux mitmuma tista' timblokka
is-server għal diversi sekondi. Biex tiġi evitata danespressjoni regolari ċaħda tas-servizz
(ReDoS), l-għodda tapplika żewġ limiti:
- a
set_time_limit(2)fuq in-naħa tal-ħaddiem (l-ipproċessar jieqaf wara 2 sekondi); - tnaqqas
pcre.backtrack_limitgħal 100,000, li tikkawża li l-mudelli jfallu malajr li jesploraw wisq kombinazzjonijiet.
F'każ ta 'raġuni għalja wisq, l-għodda turi l-messaġġ ta' żball PCRE
(preg_last_error_msg()), tipikament Il-limitu ta' l-intraċċar kien eżawrit. Ifformula mill-ġdid tiegħek
mudell li juża kwantifikaturi possessivi (a++) jew gruppi atomiċi
((?>...)) biex tevita li tmur lura.
Mistoqsijiet frekwenti
Għaliex ir-reġex tiegħi ma taqbilx minkejja li jaħdem f'JavaScript?
Il-magna ta 'din l-għodda hija PCRE (PHP), qrib Perl. Is-sintassi hija simili ħafna għal JavaScript iżda xi karatteristiċi huma differenti: lookbehinds ta' tul varjabbli, ċerti psewdonimi Unicode, jew l-immaniġġjar default tas-sensittività tal-każ. Jekk qed tippjana li tmexxi n-naħa tal-mudell browser, ittestja wkoll f'ambjent JS.
Għaliex \w tiegħi ma jaqbadx l-aċċenti?
Mingħajr il-bandiera u, \w jirrikonoxxi biss [A-Za-z0-9_]. Bil
u (Unicode), jirrikonoxxi l-ittri kollha fis-sens UCD, inklużi karattri b'aċċent.
Biex tmur lil hinn, uża klassijiet Unicode: \p{L} (ittra), \p{N}
(numru), \p{P} (punteġġjatura).
L-għodda tippreserva t-test tiegħi?
Le Il-mudell u s-suġġett huma pproċessati fir-RAM mill-ħaddiem PHP, mingħajr persistenza. L-ebda data sottomess mhux illoggjat.
X'għandi nagħmel jekk nirċievi messaġġ "Backtrack limit was exhausted"?
Il-mudell tiegħek imur 'il quddiem u lura wisq. Fittex għal kwantifikaturi neted tat-tip
(a+)+ jew (\w+)*, li huma każijiet tipiċi ta' ReDoS. Ibdelhom b'wieħed
forma mhux ambigwa: pereżempju \w+ minflok (\w+)*.
Nista' nittestja mudell b'ħafna linji?
Iva. Iċċekkja l-għażla m sabiex ^ u $ jagħrfu l-bidu
u truf ta' kull linja. Barra minn hekk iċċekkja s jekk trid li . taqsam il-
line breaks.
Eżempju ta' talba
curl -X POST https://cdrn.fr/api/v1/tools/regex-tester/execute \
-H "Content-Type: application/json" \
-d '{"pattern":"...","subject":"...","flag_i":false,"flag_m":false,"flag_s":false,"flag_u":true}'
Skema ta' input
| Kamp | Tip | Meħtieġ | Default |
|---|---|---|---|
pattern |
string | ✓ | – |
subject |
text | ✓ | – |
flag_i |
boolean | ✓ | false |
flag_m |
boolean | ✓ | false |
flag_s |
boolean | ✓ | false |
flag_u |
boolean | ✓ | true |
Endpoints
GET https://cdrn.fr/api/v1/tools- telenka l-għodod kollha disponibbliGET https://cdrn.fr/api/v1/tools/regex-tester- tikseb l-iskema ta' din l-għoddaPOST https://cdrn.fr/api/v1/tools/regex-tester/execute- teżegwixxi din l-għodda b'payload JSON