जावास्क्रिप्ट रेगुलर एक्सप्रेशन का परिचय
\nरेगुलर एक्सप्रेशन (regex या regexp) किसी दिए गए पैटर्न के अनुसार स्ट्रिंग्स को खोजने, बदलने और सत्यापित करने के लिए एक शक्तिशाली उपकरण है। जावास्क्रिप्ट (और Node.js) में, वे अंतर्निहित RegExp ऑब्जेक्ट के माध्यम से कार्यान्वित किए जाते हैं।
शुरुआती लोगों के लिए, regex सिंटैक्स डरावना लग सकता है, लेकिन वास्तव में यह पैटर्न का वर्णन करने की एक भाषा मात्र है। बुनियादी निर्माणों में महारत हासिल करके, आप यह कर सकते हैं:
\n- \n
- ईमेल, फ़ोन, URL को मान्य करना \n
- टेक्स्ट से डेटा निकालना (पार्सिंग) \n
- जटिल नियमों के अनुसार सबस्ट्रिंग बदलना \n
- उपयोगकर्ता इनपुट को फ़िल्टर और प्रोसेस करना \n
इस लेख में, हम Node.js पर जावास्क्रिप्ट में रेगुलर एक्सप्रेशन को उदाहरणों के साथ समझेंगे। सभी उदाहरण कंसोल या रनटाइम वातावरण में चलाए जा सकते हैं।
\n\nJS में रेगुलर एक्सप्रेशन बनाना
\nजावास्क्रिप्ट में regex बनाने के दो तरीके हैं:
\n1. लिटरल सिंटैक्स (अनुशंसित)
\nconst pattern = /hello/; // "hello" शब्द खोजता है\nपैटर्न दो स्लैश के बीच रखा जाता है। समापन स्लैश के बाद, आप फ़्लैग निर्दिष्ट कर सकते हैं (जैसे, i — केस-असंवेदनशील खोज)।
2. RegExp कंस्ट्रक्टर
\nconst pattern = new RegExp('hello'); // /hello/ का एनालॉग\nइसका उपयोग तब किया जाता है जब पैटर्न डायनामिक हो (वेरिएबल से बनता है)।
\n\nरेगुलर एक्सप्रेशन के फ़्लैग
\n- \n
i— केस को अनदेखा करें (/hello/i"Hello", "HELLO" ढूंढेगा) \ng— ग्लोबल खोज (पहले के बजाय सभी मिलान खोजता है) \nm— मल्टीलाइन मोड (एंकर^और$के व्यवहार को बदलता है) \ns— डॉट न्यूलाइन कैरेक्टर से मेल खाता है \nu— Unicode समर्थन \ny— स्टिकी खोज (केवल lastIndex स्थिति से खोजता है) \n
const regex = /javascript/gi; // "javascript" को ग्लोबल और केस-असंवेदनशील रूप से खोजता है\n\nजावास्क्रिप्ट में regex के साथ काम करने की मुख्य विधियाँ
\nआइए उन प्रमुख विधियों पर नज़र डालें जो रेगुलर एक्सप्रेशन के साथ उपयोग की जाती हैं।
\n\ntest() — पैटर्न की उपस्थिति की जाँच
\ntrue या false लौटाता है। सत्यापन के लिए सबसे तेज़ तरीका।
const emailPattern = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$/i;\nconsole.log(emailPattern.test('user@example.com')); // true\nconsole.log(emailPattern.test('invalid-email')); // false\n\nexec() — विवरण के साथ खोज
\nमिलान और समूहों के साथ एक ऐरे लौटाता है। g फ़्लैग के साथ, यह स्थिति याद रखता है।
const str = 'मूल्य: 100 रुपये, छूट: 20 रुपये';\nconst pricePattern = /(\\d+)\\sरुपये/g;\nlet match;\nwhile ((match = pricePattern.exec(str)) !== null) {\n console.log(`मिला: ${match[0]}, संख्या: ${match[1]}`);\n}\n// आउटपुट:\n// मिला: 100 रुपये, संख्या: 100\n// मिला: 20 रुपये, संख्या: 20\n\nmatch() — स्ट्रिंग में खोज
\nस्ट्रिंग विधि। g फ़्लैग के बिना, पहला मिलान लौटाता है (exec की तरह)। g फ़्लैग के साथ, सभी मिलानों की एक ऐरे लौटाता है।
const text = 'JS — यह JavaScript है, इसे Java के साथ भ्रमित न करें।';\nconst jsMatches = text.match(/Java\\w*/g);\nconsole.log(jsMatches); // ['JavaScript', 'Java']\n\nreplace() — पैटर्न के अनुसार बदलें
\nमिलानों को एक नई स्ट्रिंग से बदलता है। विशेष वर्णों का समर्थन करता है ($1, $&)।
const phone = '+7 (123) 456-78-90';\nconst cleanPhone = phone.replace(/[\\s\\(\\)\\-]/g, '');\nconsole.log(cleanPhone); // +71234567890\n\n// समूहों का उपयोग करके बदलें\nconst date = '2024-03-15';\nconst reversed = date.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$3.$2.$1');\nconsole.log(reversed); // 15.03.2024\n\nsearch() — पहले मिलान का इंडेक्स
\nconst index = 'Hello world'.search(/world/);\nconsole.log(index); // 6