Tástáil slonn rialta
- Deais
- Doiciméadú
- API
Cén úsáid a bhaintear as tástálaí slonn rialta?
Ligeann tástálaí regex duit seiceáil go bhfuil patrún slonn rialta (regex) ag teacht leis
leis an téacs a bhfuiltear ag súil leis, gan an cód feidhmchláir a sheoladh. Déanaimid an patrún a ghreamú, déanaimid an téacs ionchuir a ghreamú, déanaimid
seiceáil na roghanna (bratacha), agus taispeánann an uirlis liosta na meaitseanna a aimsíodh láithreach
chomh maith leis na grúpaí a gabhadh. Is é seo an coibhéis ar líne de preg_match_all() i PHP, ó
String.matchAll() i JavaScript nó re.findall() i Python.
Tá regexes cumhachtach agus casta araon. Camóg, lúibíní caillte, cainníochtaí glutton a sucks suas an iomarca carachtair: agus an teaghrán bhaintear a thuilleadh mar a bhí súil againn. An tástálaí seachnaíonn sé an turas cruinn le heagarthóir, críochfort agus comhad tástála: athráimid an patrún go dtí go bhfeicimid an toradh maith.
Conas an patrún a scríobh?
Cuir isteach an regex gan teorainneacha. Níl /.../, gan #...#.
Mar shampla, chun seoltaí ríomhphoist a ghabháil ó théacs, níl le déanamh ach dul isteach
[\w.+-]+@[\w-]+\.[\w.-]+. Tá roghanna (bratacha) á rialú ag ticbhoscaí.
Seiceáiltear an rogha u (Unicode) de réir réamhshocraithe. Tá sé beagnach i gcónaí ag teastáil: gan é,
Ní aithníonn \w variant, agus cuireann roinnt patrún earráid chiúin PCRE ar aghaidh
UTF-8 teaghráin.
Roghanna PCRE
- i (cás-íogair): Aithníonn
[a-z]litreacha móra freisin. - m (illíne): meaitseálann
^agus$tús agus foircinn gach líne, móide tús agus deireadh na teaghrán iomlán. - s (dotall): Aithníonn
.sosanna líne freisin. Úsáideach le haghaidh patrúin a chaithfidh altanna a thrasnú. - u (unicode): léirmhíníonn an patrún agus an t-ábhar in UTF-8. Riachtanach chomh luath leis an téacs ina bhfuil carachtair neamh-ASCII (variant, emoji, ideograms).
Samplaí Coiteann Regex
- Seoladh ríomhphoist:
[\w.+-]+@[\w-]+\.[\w.-]+(foirm shimplithe, is leor do cásanna is praiticiúla; dian RFC 5322 an-chasta). - URL HTTP/HTTPS:
https?://[\w.-]+(?:/[\w./?%&=-]*)? - Uimhir theileafóin na Fraince:
(?:\+33|0)\s?[1-9](?:[\s.-]?\d{2}){4} - Cód poist na Fraince:
\d{5} - Dáta ISO (BBBB-MM-DD):
\d{4}-\d{2}-\d{2} - Seoladh IPv4:
(?:\d{1,3}\.){3}\d{1,3} - Focal iomlán:
foo(seachnaíonn na teorainneacha focal meaitseáilpeil). - Haischlib:
#\w+ - Uimhir leagan shéimeantach:
\d+\.\d+\.\d+(?:-[\w.-]+)? - Aitheantas Twitter / X:
@\w{1,15}
Grúpaí gafa
Is féidir le grúpaí i lúibíní a bheith i regex, a leithlisíonn cuid den mheaitseáil le haghaidh athúsáide.
Mar shampla, gabhann an patrún (\w+)@(\w+\.\w+) a cuireadh i bhfeidhm ar alice@example.com dhá cheann
grúpaí: alice agus example.com. Taispeánann an uirlis na grúpaí seo i gcolún
tiomnaithe, in aice le gach cluiche. Tá grúpaí ainmnithe ((?P ) ann freisin
liostaithe, innéacsaithe de réir ainm.
A ghrúpáil gan ghabháil (úsáideach chun cainníochtaí a chur i bhfeidhm gan an liosta grúpaí a thruailliú), ní mór dúinn
úsáideann (?:...).
Cosaint ar ReDoS
Is féidir le hinneall PCRE PHP dul isteach chúlrianú tubaisteach ar chúiseanna paiteolaíocha áirithe:
is féidir patrún cosúil le (a+)+$ a chur i bhfeidhm ar theaghrán fada neamhchríochnaithe a
an freastalaí ar feadh roinnt soicind. Chun an sloinneadh rialta a shéanadh seirbhíse a sheachaint
(ReDoS), tá dhá theorainn i bhfeidhm ag an uirlis:
- a
set_time_limit(2)ar thaobh an oibrí (torthaí á bpróiseáil tar éis 2 shoicind); - laghdaigh
pcre.backtrack_limitgo 100,000, rud a fhágann go dteipeann ar phatrúin go tapa a dhéanann iniúchadh ar an iomarca comhcheangail.
I gcás cúis róchostasach, taispeánann an uirlis an teachtaireacht earráide PCRE
(preg_last_error_msg()), de ghnáth ídíodh teorainn an chúltaca. Athfhrása do
patrún ag úsáid cainníochtaithe sealbhacha (a++) nó grúpaí adamhacha
((?>...)) chun cúlrianú a sheachaint.
Ceisteanna coitianta
Cén fáth nach bhfuil mo regex mar a chéile cé go n-oibríonn sé i JavaScript?
Is é PCRE (PHP) inneall na huirlise seo, gar do Perl. Tá an chomhréir an-chosúil le JavaScript ach tá roinnt gnéithe difriúil: lookbehinds d'fhad athraitheach, ailiasanna áirithe Unicode, nó láimhseáil réamhshocraithe íogaireacht cáis. Má tá sé ar intinn agat an taobh patrún a rith bhrabhsálaí, tástáil freisin i dtimpeallacht JS.
Cén fáth nach nglacann mo \w variant?
Gan an bhratach u, ní aithníonn \w ach [A-Za-z0-9_]. Le
u (Unicode), aithníonn sé gach litir sa chiall UCD, lena n-áirítear carachtair accented.
Chun dul níos faide, bain úsáid as ranganna Unicode: \p{L} (litir), \p{N}
(uimhir), \p{P} (poncaireacht).
An gcaomhnaíonn an uirlis mo théacs?
Déanann an t-oibrí PHP an patrún agus an t-ábhar a phróiseáil i RAM, gan marthanacht. Gan sonraí nach bhfuil curtha isteach logáilte.
Cad ba cheart dom a dhéanamh má fhaighim teachtaireacht "Tá teorainn an chúlrian ídithe"?
Téann do phatrún ar ais agus amach i bhfad ró. Cuardaigh chainníochtóirí neadaithe den chineál
(a+)+ nó (\w+)*, ar cásanna tipiciúla iad de ReDoS. Cuir ceann amháin ina ionad
foirm gan athbhrí: mar shampla \w+ in ionad (\w+)*.
An féidir liom patrún illíne a thástáil?
Tá. Seiceáil an rogha m ionas go n-aithneoidh ^ agus $ na túsanna
agus foircinn gach líne. Ina theannta sin seiceáil s más mian leat . a thrasnú
briseadh líne.
Sampla iarratais
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}'
Scéimre ionchuir
| Réimse | Cineál | Riachtanach | Réamhshocrú |
|---|---|---|---|
pattern |
string | ✓ | – |
subject |
text | ✓ | – |
flag_i |
boolean | ✓ | false |
flag_m |
boolean | ✓ | false |
flag_s |
boolean | ✓ | false |
flag_u |
boolean | ✓ | true |
Críochphointí
GET https://cdrn.fr/api/v1/tools- liostaíonn na huirlisí go léir atá ar fáilGET https://cdrn.fr/api/v1/tools/regex-tester- faigh scéimre na huirlise seoPOST https://cdrn.fr/api/v1/tools/regex-tester/execute- rith an uirlis seo le pálasta JSON