मैं जावास्क्रिप्ट में काम करने के लिए अपना रेगेक्स प्राप्त करने की कोशिश कर रहा हूं, लेकिन मुझे एक समस्या है।
कोड:
var reg = new RegExp("978d{10}");
var isbn = "9788740013498";
var res = isbn.match(reg);
console.log(res);
हालाँकि, res हमेशा है null
कंसोल में।
यह काफी दिलचस्प है, क्योंकि रेगेक्स को काम करना चाहिए।
मेरा सवाल: फिर, एक स्ट्रिंग और रेगेक्स से मेल करने के लिए सही सिंटैक्स क्या है?
(यदि यह मायने रखता है और पर्यावरण में कोई भी कह सकता है: यह कोड ए से लिया गया है app.get
में बनाया गया दृश्य Express.js
मेरे में Node.js
आवेदन)
उत्तर:
जवाब के लिए 3 № 1क्योंकि आप अपने रेगेक्स के निर्माण के लिए एक स्ट्रिंग का उपयोग कर रहे हैं, इसलिए आपको बच निकलने की आवश्यकता है । यह वर्तमान में बचने के लिए काम कर रहा है
d
, जो भागने की जरूरत नहीं है।
आप देख सकते हैं कि अगर आप क्रोम कंसोल पर अपना रेगेक्स बनाते हैं तो क्या होगा:
new RegExp("978d{10}");
// => /978d{10}/
ध्यान दें कि कोई नहीं है d
, केवल एक d
, इसलिए आपका रेगेक्स मेल खाता है 978dddddddddd
। वह है, शाब्दिक "d"
चरित्र 10 बार दोहराया गया।
आपको उपयोग करने की ज़रूरत है \
शाब्दिक सम्मिलित करना स्ट्रिंग में आप "रेगेक्स का निर्माण कर रहे हैं:
var reg = new RegExp("978\d{10}");
var isbn = "9788740013498";
var res = isbn.match(reg);
console.log(res)
// => ["9788740013498", index: 0, input: "9788740013498"]
जवाब के लिए 2 № 2
यदि आप RegExp कंस्ट्रक्टर का उपयोग करते हैं तो आपको डबल बैक स्लैश से बचना होगा:
var reg = new RegExp("978\d{10}");
कोट फ़ॉर्म प्रलेखन:
कंस्ट्रक्टर फ़ंक्शन का उपयोग करते समय, सामान्य स्ट्रिंग एस्केप नियम (किसी स्ट्रिंग में शामिल होने पर विशेष वर्णों को पूर्ववर्ती करना) आवश्यक हैं। उदाहरण के लिए, निम्नलिखित समतुल्य हैं:
var re = /w+/;
var re = new RegExp("\w+");