2013-05-20 5 views
21

मैं टाइपस्क्रिप्ट में Regexp को कैसे कार्यान्वित कर सकता हूं?टाइपस्क्रिप्ट में RegExp

मेरे उदाहरण:

var trigger = "2" 
var regex = new RegExp('^[1-9]\d{0,2}$', trigger); // where I have exeption in Chrome console 

उत्तर

22

मुझे लगता है कि आप टाइपप्रति में अपने रेगुलर एक्सप्रेशन test करना चाहते हैं, तो आप इस तरह क्या करना है:

var trigger = "2", 
    regexp = new RegExp('^[1-9]\d{0,2}$'), 
    test = regexp.test(trigger); 
alert(test + ""); // will display true 

आप MDN Reference - RegExp पढ़ना चाहिए, RegExp वस्तु दो स्वीकार करता है पैरामीटर pattern और flags जो शून्य है (छोड़ा जा सकता है/अपरिभाषित)। अपने रेगेक्स का परीक्षण करने के लिए आपको .test() विधि का उपयोग करना होगा, जिस स्ट्रिंग को आप अपने RegExp की घोषणा के अंदर परीक्षण करना चाहते हैं उसे पास नहीं करना है!

क्यों test + ""? क्योंकि टीएस में alert() तर्क के रूप में एक स्ट्रिंग स्वीकार करता है, इसे इस तरह लिखना बेहतर है। आप पूर्ण कोड here आज़मा सकते हैं।

+0

यदि वर ट्रिगर = "10", regexp = नए RegExp ('^ [1-9] \ घ {0,2} $'), परीक्षण = regexp.test (ट्रिगर); अलर्ट (परीक्षण + ""); अलर्ट रिटर्न झूठी, यह सही नहीं है – zrabzdn

+0

अपने वर्तमान रेगेक्स पैटर्न को इसके साथ बदलें: ''^([0-9] \ d {0,2}) + $ '' –

+2

क्योंकि आप स्ट्रिंग से RegExp ऑब्जेक्ट बना रहे हैं बैकस्लैश से बचने की भी आवश्यकता है: 'नया RegExp ('^[1-9] \\ डी {0,2} $ ')' या रेगेक्स शाब्दिक नोटेशन का उपयोग करें: '/^[1-9] \ d {0, 2} $/' –

11

तुम सिर्फ कर सकते हैं:

var regex = /^[1-9]\d{0,2}$/g 
regex.test(2) // outputs true 
+0

यह टाइपस्क्रिप्ट में काम नहीं करता है (कम से कम 2.1 में) – ghostbust555

+0

ऐसा लगता है कि RegExp.test के हस्ताक्षर वास्तव में बदल गए हैं (या https://developer.mozilla.org/en-US/ पर संशोधित दस्तावेज़/वेब/जावास्क्रिप्ट/संदर्भ/Global_Objects/RegExp/test) जहां परीक्षण विधि अब स्ट्रिंग की अपेक्षा कर रही है। इंगित करने के लिए धन्यवाद – sebas2day

-1
let pattern=new RegExp("^-?[0-9]+(\.[0-9]+)?") 
result=pattern.isMatch("hi") //returns false