जावास्क्रिप्ट में एक नियमित अभिव्यक्ति परिभाषित कर चुकी है और अब उपयोगकर्ता एक स्ट्रिंग में टाइप कर रहा है या नहीं। मैं उसे बताना चाहता हूं कि यदि उसकी स्ट्रिंग अभी भी टाइपिंग जारी रखती है या यदि वह पहले से ही गलत तरीके से है तो उसकी स्ट्रिंग RegExp से मेल खा सकती है। उदाहरण के लिए:जांचें कि स्ट्रिंग जावास्क्रिप्ट RegExp
var re = /a*b/;
"a".isPrefixOf(re); // true
"x".isPrefixOf(re); // false
कैसे isPrefixOf
के एक कार्यान्वयन दिखाई दे सकता है?
अपडेट: ब्रैड द्वारा सुझाए गए रेगेक्स उपसर्ग-सबूत को बनाने के लिए धन्यवाद, एक अच्छा कामकाज प्रतीत होता है। लेकिन मैं अभी भी एक सामान्य समाधान खोजने की कोशिश कर रहा हूं।
शायद इस तरह: हम उपयोगकर्ता इनपुट के साथ .*
के साथ एक नया regex बनाते हैं। यह regex उन सभी शब्दों का वर्णन करता है जो उपयोगकर्ता अभी भी दर्ज कर सकते हैं। यदि इस निर्मित रेगेक्स का चौराहे और मूल regex खाली है तो उपयोगकर्ता पहले से ही गलत तरीके से है। यदि ऐसा नहीं है, तो वह ठीक कर रहा है। उदाहरण के लिए:
var re = /a*b/;
var sInput = "a";
var reInput = new RegExp(sInput + ".*");
reIntersection = re.intersect(reInput);
reIntersection.isEmpty(); // false
intersect()
एक नया regex कि केवल शब्द है जो दोनों re
और reInput
स्वीकार करेंगे स्वीकार करता है देता है। समारोह अभी तक मौजूद नहीं है, लेकिन हम देखो आगे का उपयोग कर इसे लागू कर सकते हैं:
RegExp.prototype.intersect = function(pattern2) {
return new RegExp('(?=' + this.source + ')' + pattern2.source);
}
क्या खुला रहता है isEmpty()
कार्य है। अगर हम जावास्क्रिप्ट रीगेक्स किसी भी शब्द से मेल खाते हैं या यह खाली है तो हम कैसे जांच सकते हैं?
आपको प्रश्न को और सावधानी से पढ़ना चाहिए। यह Matcher को कॉल करने के लिए नहीं पूछता है। यह पूछता है कि कैसे matcher लिखना है। – user51568