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 | tab, வரி முறிவு உட்பட இடைவெளி | /\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 |
(?=…) | அதன் பின் வருவது (lookahead) | /\d+(?=%)/ | 50 of 75% | 75 |
(?<!…) | அதன் முன் வராதது (negative lookbehind) | /(?<!\$)\b\d+/ | $30 or 40 | 40 |
\p{L} | எந்த Unicode எழுத்தும் (u தேவை) | /\p{L}+/u | naïve 東京 | naïve |
ஆறு கொடிகளும் அவை எதை மாற்றுகின்றன என்பதும்
g (global) முதல் பொருத்தத்தில் நிற்காமல் எல்லா பொருத்தங்களையும் கண்டுபிடிக்கும்; இது இல்லாவிட்டால் பட்டியலில் ஒரே ஒரு பதிவு இருக்கும். i எழுத்து வடிவ வேறுபாட்டைப் புறக்கணிக்கும். m (multiline) ^ மற்றும் $ குறியீடுகளை முழு உரையின் தொடக்கம், முடிவில் மட்டுமின்றி ஒவ்வொரு வரியின் தொடக்கம், முடிவிலும் பொருந்தச் செய்யும்; வரி இறுதியில் உள்ள இடைவெளிகள் போன்ற பேட்டர்னுக்கு இதுவே தேவை. s (dotAll, ES2018-இல் சேர்க்கப்பட்டது) . குறியீடு வரி முறிவுகளையும் பொருந்த அனுமதிக்கும். u (unicode) உரையை code point-களாகக் கருதும்; எனவே ஒரு எமோஜி ஒரே எழுத்தாகக் கணக்கிடப்படும். மேலும் எந்த மொழியிலும் உள்ள எந்த எழுத்தையும் குறிக்கும் \p{L} போன்ற property escape-களை இயக்கும். y (sticky) தற்போதைய இடத்தில் மட்டுமே பொருந்தும்; டோக்கனைசர்கள் பயன்படுத்தும் முறை இது. JavaScript-இல் match indices-க்கு d, வகுப்புகளில் set operations-க்கு v ஆகியவையும் உள்ளன; இந்தச் சோதனைக் கருவி மேலே உள்ள ஆறை மட்டுமே பயன்படுத்துகிறது.
சோதனை உரைக்குக் கீழே ஒவ்வொரு பொருத்தமும் அதன் index மற்றும் குழுக்களுடன் காட்டப்படும். எண்ணிடப்பட்ட குழுக்கள் சாதாரண அடைப்புக்குறிகளிலிருந்து வரும்; (?:…) பிடிக்காத குழு; (?<year>\d{4}) பெயரிட்ட குழுவை உருவாக்கும், அது ISO தேதி மாதிரியில் காட்டியபடி பெயருடன் தோன்றும். Common patterns பட்டியல் மின்னஞ்சல் முகவரிகள், URL-கள், IPv4 முகவரிகள், hex நிறங்கள், UUID-கள், திரும்பத் திரும்ப வரும் சொற்கள், வரி இறுதி இடைவெளிகள் ஆகியவற்றுக்குச் சோதித்த தொடக்க பேட்டர்ன்களைச் செருகும். மின்னஞ்சல் பேட்டர்னை சரிபார்ப்பாக அல்ல, ஒரு தோராயச் சோதனையாக மட்டுமே கருதுங்கள்: முழு முகவரி இலக்கணம் இதைவிட மிகவும் தளர்வானது; உண்மையான சோதனை செய்தி அனுப்பிப் பார்ப்பதே.
Lookbehind மற்றும் catastrophic backtracking
Lookaround-கள் ஒரு இடத்தைச் சுற்றியுள்ளதை அதை உட்கொள்ளாமல் சோதிக்கும். Lookahead, (?=…) மற்றும் (?!…), JavaScript-இல் எப்போதும் இருந்தவை; lookbehind, (?<=…) மற்றும் (?<!…), ES2018-இல் வந்தது, 2023-இல் Safari 16.4 அதை வழங்கியதும் எல்லா முக்கிய உலாவிகளிலும் கிடைத்தது. எனவே (?<=\$)\d+ "$42" என்பதில் டாலர் குறியை சேர்க்காமல் 42-ஐக் கண்டுபிடிக்கும். பல பிற இயந்திரங்களைப் போலன்றி, JavaScript எந்த நீளமுள்ள lookbehind-ஐயும் அனுமதிக்கும்.
JavaScript இயந்திரம் backtracking முறையில் செயல்படுகிறது: ஒரு பாதை தோல்வியடைந்தால் திரும்பிச் சென்று மாற்று வழிகளை முயலும். (a+)+$ போன்ற உள்ளடுக்கு quantifier-கள் ஒரே உரையைப் பிரிக்க அடுக்குக்குறி எண்ணிக்கையிலான வழிகளைத் தரும்; எனவே 30 a-க்குப் பின் x உள்ள சரம் சில விநாடிகளும், இன்னும் சில எழுத்துகள் சேர்ந்தால் பல மணி நேரமும் எடுக்கலாம். இதுவே catastrophic backtracking; சர்வர்களில் இது ReDoS எனப்படும் சேவை முடக்கத் தாக்குதலாகிறது; இந்தக் குறையுள்ள ஒரே WAF விதி 2019 ஜூலை 2 அன்று Cloudflare நெட்வொர்க்கை சுமார் அரை மணி நேரம் முடக்கியது. இந்தக் கருவி உங்கள் டேபிலேயே இயங்குவதால், அத்தகைய பேட்டர்ன் பக்கத்தை உறையச் செய்யலாம்; பக்கத்தை மீண்டும் ஏற்றி, இரு quantifier-கள் ஒரே எழுத்துகளைக் கோர முடியாதபடி .*-க்குப் பதிலாக [^,]* போன்ற இறுக்கமான வகுப்புகளையோ anchor-களையோ பயன்படுத்தி மாற்றி எழுதுங்கள். உரையைப் பொருத்துவதற்குப் பதிலாக திருத்த வேண்டுமெனில் உரைக் கருவிகள் பகுதியைப் பாருங்கள்; மேலும் டெவலப்பர் கருவிகள் டெவலப்பர் கருவிகள் பக்கத்தில் உள்ளன.
அடிக்கடி கேட்கப்படும் கேள்விகள்
- என் regex ஏன் ஒரே ஒரு பொருத்தத்தை மட்டும் கண்டுபிடிக்கிறது?
- g ஃபிளாக் அணைந்திருக்கிறது. அது இல்லாவிட்டால் இயந்திரம் முதல் பொருத்தத்திற்குப் பின் நின்றுவிடும். எல்லா இடங்களையும் பட்டியலிட g-ஐத் தேர்ந்தெடுங்கள்; y ஃபிளாக் மட்டும் பல பொருத்தங்களைக் காட்டும், ஆனால் அவை ஒன்றையொன்று நேரடியாகத் தொடர்ந்தால் மட்டுமே.
- JavaScript-இல் \d பிற எழுத்துமுறைகளின் இலக்கங்களையும் பொருத்துமா?
- இல்லை. JavaScript-இல் \d என்பது 0 முதல் 9 வரை மட்டுமே, \w என்பது ASCII எழுத்துகள், இலக்கங்கள், அடிக்கோடு மட்டுமே; u ஃபிளாக் இருந்தாலும் அப்படித்தான். பிற மொழிகளுக்கு u உடன் \p{Nd} அல்லது \p{L} பயன்படுத்துங்கள்.
- இங்கே சோதித்த பேட்டர்ன் Python அல்லது PHP-இலும் இதே போல் செயல்படுமா?
- அடிப்படை தொடரியல் பொதுவானது, ஆனால் விவரங்கள் வேறுபடும்: Python-இல் பெயரிட்ட குழுக்கள்
(?P<name>…)என எழுதப்படும், JavaScript-இல் இல்லாத possessive quantifier-களை PHP-யும் Python-உம் ஆதரிக்கும், lookbehind விதிகளும் மாறுபடும். இலக்கு இயந்திரத்தில் மீண்டும் சோதியுங்கள். - புள்ளி அல்லது அடைப்புக்குறியை அப்படியே பொருத்துவது எப்படி?
- பின்சாய்வுக் கோட்டுடன் தப்பவிடுங்கள்:
\.புள்ளியையும்\[திறக்கும் அடைப்பையும் பொருத்தும். எழுத்து வகுப்பின் உள்ளே பெரும்பாலான குறியீடுகள் ஏற்கனவே நேரடிப் பொருள் கொள்ளும்; எனவே[.]-உம் புள்ளியை மட்டுமே பொருத்தும். - பேட்டர்னைத் தட்டச்சு செய்யும்போது பக்கம் ஏன் உறைந்து போனது?
- உங்கள் உரையில் அந்த பேட்டர்ன் catastrophic backtracking-ஐத் தூண்டியிருக்கலாம். பக்கத்தை மீண்டும் ஏற்றி,
(.*)*அல்லது(a+)+போன்ற உள்ளடுக்கு quantifier-களைத் தவிர்த்து, ஒவ்வொரு பகுதியும் முடிந்தவரை குறைவாகப் பொருந்துமாறு அமையுங்கள்.