2015-03-07 11 views
13

मैं पिक रेगेक्स करने से परिचित हूं, हालांकि वे तेजी से काम नहीं कर रहे हैं।स्विफ्ट नियमित अभिव्यक्ति प्रारूप?

^([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$ 

तरह 1,000,000.00

हालांकि संख्या मान्य करने के लिए, मेरे तेज समारोह में इस डाल, एक त्रुटि का कारण बनता है।

extension String { 
    func isValidNumber() -> Bool { 
     let regex = NSRegularExpression(pattern: "^([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$", options: .CaseInsensitive, error: nil) 
     return regex?.firstMatchInString(self, options: nil, range: NSMakeRange(0, countElements(self))) != nil 
    } 
} 

"litteral में अमान्य बचाव अनुक्रम" यह, ज़ाहिर है, क्योंकि PCRE के बाद से मैं एक भागने के रूप में "\" चरित्र है, जो तेजी से व्याख्या (मेरा मानना ​​है कि?)

का उपयोग करता है तो मैं उन रेगेक्स का उपयोग नहीं कर सकता जो मैं उपयोग कर रहा हूं। स्विफ्ट कोड के साथ संगत होने के लिए मैं उनका अनुवाद कैसे करूं?

+1

बस एक बार बैकस्लैश से बचें। –

उत्तर

28

डबल कोट्स के भीतर, एक बैकस्लैश को बचने के क्रम के रूप में पढ़ा जाएगा। रेगेक्स बैकस्लैश चरित्र के रूप में इसे मानने के लिए आपको एक बार फिर सभी बैकस्लैश से बचने की आवश्यकता है।

"^([1-9]\\d{0,2}(,\\d{3})*|([1-9]\\d*))(\\.\\d{2})?$" 
+0

आपको बहुत बहुत धन्यवाद! – MLyck

संबंधित मुद्दे