Regex టెస్టర్
ప్యాటర్న్ టైప్ చేసి, మీకు కావలసిన ఫ్లాగ్లను టిక్ చేసి, కొంత టెక్స్ట్ పేస్ట్ చేయండి: మీరు టైప్ చేస్తుండగానే ప్రతి మ్యాచ్ హైలైట్ అవుతుంది, దాని స్థానం, క్యాప్చర్ గ్రూప్లతో పాటు జాబితాలో కనిపిస్తుంది. ప్యాటర్న్ మీ బ్రౌజర్లోని JavaScript regex ఇంజిన్పైనే నడుస్తుంది, కాబట్టి ఫలితాలు మీ కోడ్లో వచ్చే ఫలితాలతో సరిపోతాయి, టెక్స్ట్ మీ పరికరంలోనే ఉంటుంది.
0 అక్షరాలు · 0 పదాలు · 0 లైన్లు
మ్యాచ్లు ఇక్కడ హైలైట్ అవుతాయి.0 అక్షరాలు · 0 పదాలు · 0 లైన్లు
పూర్తిగా ఈ బ్రౌజర్ ట్యాబ్లోనే నడుస్తుంది. మీ టెక్స్ట్ అప్లోడ్ లేదా నిల్వ చేయబడదు.
JavaScript regex టోకెన్లు
ఈ పేజీని తయారుచేసిన JavaScript ఇంజిన్తో ప్రతి ప్యాటర్న్ను దాని టెక్స్ట్పై నడిపి మొదటి మ్యాచ్ కాలమ్ను రూపొందించాం.
| టోకెన్ | అర్థం | ప్యాటర్న్ | టెక్స్ట్ | మొదటి మ్యాచ్ |
|---|---|---|---|---|
\d | అంకె 0–9 | /\d+/ | Order 66 shipped | 66 |
\w | అక్షరం, అంకె లేదా అండర్స్కోర్ (ASCII) | /\w+/ | snake_case-id | snake_case |
\s | ట్యాబ్లు, లైన్ బ్రేక్లతో సహా ఖాళీ స్థలం | /\s+/ | two spaces | |
. | లైన్ బ్రేక్ తప్ప ఏ అక్షరమైనా (s ఉంటే తప్ప) | /a.c/ | abc a-c | abc |
^ $ | ఇన్పుట్ (లేదా m తో లైన్) ప్రారంభం, ముగింపు | /^\w+$/ | single | single |
[abc] | జాబితాలోని అక్షరాల్లో ఒకటి | /[aeiou]/ | rhythm and blues | a |
[^abc] | జాబితాలో లేని ఏ అక్షరమైనా | /[^0-9]+/ | 2026-10-18 | - |
* + ? | 0 లేదా అంతకంటే ఎక్కువ, 1 లేదా అంతకంటే ఎక్కువ, 0 లేదా 1 | /colou?r/ | color colour | color |
{n,m} | n నుండి m సార్ల మధ్య | /\d{2,4}/ | 7 42 1999 123456 | 42 |
(…) | క్యాప్చరింగ్ గ్రూప్ | /(\d+)px/ | width: 320px | 320px |
(?<name>…) | పేరున్న క్యాప్చరింగ్ గ్రూప్ | /(?<h>\d\d):(?<m>\d\d)/ | at 09:45 | 09:45 |
(?:…) | క్యాప్చర్ చేయని గ్రూప్ | /(?:ab)+/ | ababab! | ababab |
a|b | ఏదో ఒక వైపు | /cat|dog/ | hotdog | dog |
\b | పద సరిహద్దు | /\bcat\b/ | concat cat | cat |
(?=…) | దీని తర్వాత ఉంటే (లుక్అహెడ్) | /\d+(?=%)/ | 50 of 75% | 75 |
(?<!…) | దీని ముందు లేకపోతే (నెగటివ్ లుక్బిహైండ్) | /(?<!\$)\b\d+/ | $30 or 40 | 40 |
\p{L} | ఏ యూనికోడ్ అక్షరమైనా (u అవసరం) | /\p{L}+/u | naïve 東京 | naïve |
ఆరు ఫ్లాగ్లు, అవి ఏం మారుస్తాయి
g (గ్లోబల్) మొదటి మ్యాచ్ వద్ద ఆగకుండా అన్ని మ్యాచ్లను కనుగొంటుంది; ఇది లేకపోతే జాబితాలో ఒకే ఎంట్రీ ఉంటుంది. i అక్షరాల కేస్ను పట్టించుకోదు. m (మల్టీలైన్) వల్ల ^ మరియు $ మొత్తం టెక్స్ట్ మొదట, చివర మాత్రమే కాకుండా ప్రతి లైన్ మొదట, చివర మ్యాచ్ అవుతాయి; చివర ఉన్న స్పేస్ల వంటి ప్యాటర్న్లకు ఇదే కావాలి. s (dotAll, ES2018లో చేర్చబడింది) . లైన్ బ్రేక్లను కూడా మ్యాచ్ చేయడానికి అనుమతిస్తుంది. u (యూనికోడ్) టెక్స్ట్ను కోడ్ పాయింట్లుగా పరిగణిస్తుంది, కాబట్టి ఒక ఎమోజీ ఒక అక్షరంగా లెక్కవుతుంది, అలాగే ఏ లిపిలోని ఏ అక్షరానికైనా \p{L} వంటి ప్రాపర్టీ ఎస్కేప్లను ప్రారంభిస్తుంది. y (స్టిక్కీ) ప్రస్తుత స్థానంలోనే సరిగ్గా మ్యాచ్ అవుతుంది; టోకెనైజర్లు ఉపయోగించే మోడ్ ఇదే. JavaScriptలో మ్యాచ్ ఇండెక్స్ల కోసం d, క్లాస్లలో సెట్ ఆపరేషన్ల కోసం v కూడా ఉన్నాయి; ఈ టెస్టర్ పై ఆరింటికే పరిమితం.
టెస్ట్ టెక్స్ట్ కింద, ప్రతి మ్యాచ్ దాని ఇండెక్స్ను, గ్రూపులను చూపిస్తుంది. సాధారణ కుండలీకరణాల నుండి నంబర్ గ్రూపులు వస్తాయి, (?:…) క్యాప్చర్ చేయని గ్రూప్, (?<year>\d{4}) పేరున్న గ్రూప్ను సృష్టిస్తుంది, అది ISO తేదీ నమూనాలో చూపినట్లు పేరుతోనే కనిపిస్తుంది. సాధారణ ప్యాటర్న్లు మెనూ ఇమెయిల్ చిరునామాలు, URLలు, IPv4 చిరునామాలు, హెక్స్ రంగులు, UUIDలు, పునరావృత పదాలు, చివరి స్పేస్లకు పరీక్షించిన ప్రారంభ ప్యాటర్న్లను చేరుస్తుంది. ఇమెయిల్ ప్యాటర్న్ను ధృవీకరణగా కాకుండా సాధారణ తనిఖీగా మాత్రమే చూడండి: పూర్తి చిరునామా వ్యాకరణం చాలా విస్తృతమైనది, అసలైన పరీక్ష సందేశం పంపడమే.
Lookbehind, క్యాటస్ట్రోఫిక్ బ్యాక్ట్రాకింగ్
లుక్అరౌండ్లు ఒక స్థానం చుట్టూ ఉన్నదాన్ని వినియోగించకుండా పరీక్షిస్తాయి. లుక్అహెడ్ (?=…), (?!…) ఎప్పటినుండో JavaScriptలో ఉంది; లుక్బిహైండ్ (?<=…), (?<!…) ES2018లో వచ్చింది, 2023లో Safari 16.4 దాన్ని అందించడంతో అన్ని ప్రధాన బ్రౌజర్లకు చేరింది. కాబట్టి (?<=\$)\d+ "$42"లో డాలర్ గుర్తును చేర్చకుండా 42ను కనుగొంటుంది. అనేక ఇతర ఇంజిన్లలా కాకుండా, JavaScript ఏ పొడవు లుక్బిహైండ్నైనా అనుమతిస్తుంది.
JavaScript ఇంజిన్ బ్యాక్ట్రాకింగ్ పద్ధతిలో పనిచేస్తుంది: ఒక మార్గం విఫలమైతే వెనక్కి వెళ్లి ప్రత్యామ్నాయాలను ప్రయత్నిస్తుంది. (a+)+$ వంటి నెస్టెడ్ క్వాంటిఫైయర్లు అదే టెక్స్ట్ను విభజించడానికి ఘాతాంక సంఖ్యలో మార్గాలను ఇస్తాయి, కాబట్టి 30 a లు, తర్వాత x ఉన్న స్ట్రింగ్కు సెకన్లు పట్టవచ్చు, మరికొన్ని అక్షరాలకు గంటలు పట్టవచ్చు. దీన్ని క్యాటస్ట్రోఫిక్ బ్యాక్ట్రాకింగ్ అంటారు; సర్వర్లలో ఇది ReDoS అనే డినయల్ ఆఫ్ సర్వీస్ అవుతుంది; ఈ లోపం ఉన్న ఒక్క WAF రూల్ 2019 జూలై 2న Cloudflare నెట్వర్క్ను సుమారు అరగంట పాటు నిలిపివేసింది. ఈ టెస్టర్ మీ ట్యాబ్లోనే నడుస్తుంది కాబట్టి, అలాంటి ప్యాటర్న్ పేజీని స్తంభింపజేయవచ్చు; రీలోడ్ చేసి, రెండు క్వాంటిఫైయర్లు ఒకే అక్షరాలను క్లెయిమ్ చేయకుండా .* బదులు [^,]* వంటి కచ్చితమైన క్లాస్లు లేదా యాంకర్లతో తిరిగి రాయండి. టెక్స్ట్ను మ్యాచ్ చేయడం కాకుండా ఎడిట్ చేయడానికి టెక్స్ట్ టూల్స్ చూడండి; మరిన్ని డెవలపర్ యుటిలిటీలు డెవలపర్ టూల్స్ హబ్లో ఉన్నాయి.
తరచుగా అడిగే ప్రశ్నలు
- నా regex ఒక్క మ్యాచ్నే ఎందుకు కనుగొంటోంది?
- g ఫ్లాగ్ ఆఫ్లో ఉంది. అది లేకపోతే ఇంజిన్ మొదటి మ్యాచ్ తర్వాత ఆగిపోతుంది. అన్ని సందర్భాలను జాబితా చేయడానికి g టిక్ చేయండి; y ఫ్లాగ్ మాత్రమే కూడా చాలా వాటిని కనుగొంటుంది, కానీ అవి ఒకదాని వెంట ఒకటి నేరుగా ఉన్నప్పుడే.
- JavaScriptలో \d ఇతర లిపుల అంకెలను కూడా మ్యాచ్ చేస్తుందా?
- కాదు. JavaScriptలో \d అంటే 0 నుండి 9 మాత్రమే, \w అంటే ASCII అక్షరాలు, అంకెలు, అండర్స్కోర్ మాత్రమే, u ఫ్లాగ్ ఉన్నా కూడా. ఇతర లిపుల కోసం u తో \p{Nd} లేదా \p{L} ఉపయోగించండి.
- ఇక్కడ టెస్ట్ చేసిన ప్యాటర్న్ Python లేదా PHPలో కూడా ఇలాగే పనిచేస్తుందా?
- ప్రాథమిక సింటాక్స్ అలాగే వస్తుంది, కానీ వివరాలు వేరుగా ఉంటాయి: Pythonలో పేరున్న గ్రూపులు
(?P<name>…)అని రాస్తారు, PHP, Pythonలో JavaScriptకు లేని పొసెసివ్ క్వాంటిఫైయర్లు ఉన్నాయి, లుక్బిహైండ్ నియమాలు మారుతుంటాయి. లక్ష్య ఇంజిన్లో మళ్లీ పరీక్షించండి. - అసలైన చుక్క (.) లేదా బ్రాకెట్ను ఎలా మ్యాచ్ చేయాలి?
- బ్యాక్స్లాష్తో ఎస్కేప్ చేయండి:
\.ఒక చుక్కను,\[ఓపెనింగ్ బ్రాకెట్ను మ్యాచ్ చేస్తుంది. క్యారెక్టర్ క్లాస్ లోపల చాలా గుర్తులు ఇప్పటికే సాధారణ అక్షరాలే, కాబట్టి[.]కూడా చుక్కను మాత్రమే మ్యాచ్ చేస్తుంది. - ప్యాటర్న్ టైప్ చేస్తుండగా పేజీ ఎందుకు స్తంభించిపోయింది?
- ఆ ప్యాటర్న్ మీ టెక్స్ట్పై క్యాటస్ట్రోఫిక్ బ్యాక్ట్రాకింగ్కు కారణమై ఉండవచ్చు. రీలోడ్ చేసి,
(.*)*లేదా(a+)+వంటి నెస్టెడ్ క్వాంటిఫైయర్లను నివారించండి, ప్రతి భాగం వీలైనంత తక్కువగా మ్యాచ్ అయ్యేలా చేయండి.