2012-10-16 8 views
7

यह एक xaml फ़ाइल के भीतर है।नियमित अभिव्यक्तियों द्वारा इनपुट मास्क कैसे करें? या तो 1112223333 या 1112223333444

मुझे नियमित अभिव्यक्ति के साथ बॉक्स के इनपुट को मुखौटा करने की आवश्यकता है।

मैं इसे (कोई प्रतीकों के साथ अनुक्रम में,) या तो 10 नंबर या 13 संख्या को रोकने के लिए

मैं की जरूरत है:

<... ValidationRegEx="\d{13}" /> 

जो ठीक काम करता है, लेकिन जब मैं का एक मुखौटा जोड़ना चाहते हैं दस में, यह टूट जाता है:

<... ValidationRegEx="\d{13} | \d{10}" /> 

कोई विचार?

+6

दूसरा Regex में कोई रिक्त स्थान? –

+2

शायद "|" से पहले और बाद में स्थान हटाएं ? –

+2

कृपया यह प्रश्न करने के लिए अपने प्रश्न/टैग अपडेट करें कि यह प्रश्न XAML के बारे में है, सी # नहीं। आपके कोड स्निपेट शायद एक्सएएमएल भी हो सकते हैं, सी # – JDB

उत्तर

0

यह वही मेरे लिए काम किया है:

< ... RegEx="\b\d{10}\b|\b\d{13}\b" ... /> 

यह प्रतिनिधित्व करता है "10 अंक के साथ एक पूरी शब्द खोजने या 13 अंकों के साथ एक पूरी दुनिया को लगता है"।

\ b रेगेक्स के सामने और पीछे \ n पूरे शब्द को इंगित करता है।

चेक बाहर इस ट्यूटोरियल साइट में मदद की है कि मुझे मेरे ही सवाल का जवाब:

http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial

+1

पर अनुकूलित कर सकते हैं यह दिखाने के लिए कि आपको अपना उत्तर कैसे मिला है। – neontapir

+0

@ Ωmega, यह बिल्कुल गलत नहीं है। \ d नोटिस, जो अंक इंगित करता है। –

+0

गलत! गलत! गलत! झसे आज़माओ! –

8

मैं पतली रिक्त स्थान हटा दिया जाना चाहिए, इस तरह:

ValidationRegEx = "\d{13}|\d{10}" 

अन्यथा, अंतरिक्ष वर्ण स्ट्रिंग है कि आप से मेल खाते हैं (यानी 13 अंकों की एक अंतरिक्ष, या एक अंतरिक्ष दस अंक के बाद के बाद का हिस्सा बन)।

आप भी इस तरह अभिव्यक्ति को सरल बनाने की कोशिश कर सकते:

ValidationRegEx = "\d{10}\d{3}?" 

(आवश्यक दस से अधिक तीन वैकल्पिक अंक)।

+0

मिला है, इसका मतलब क्या है कि आप मान्य सी # स्ट्रिंग अक्षर बनाने के लिए डबल स्लेश किए गए हैं? \\ d {10} \\ d {3} के बीच क्या अंतर है? और \ d {10} \ d {3}? ? –

+2

@ jordan.peoples \ एक बचने का चरित्र है। एक \\ भागने से बच निकलता है। –

+1

@ jordan.peoples यदि आप एक त्रुटि के साथ एक स्लैश के साथ एक स्ट्रिंग अक्षर बनाते हैं, तो यह निम्नलिखित त्रुटि के साथ \ "\ d" ', [यह संकलित नहीं करेगा] (http://ideone.com/3ZxWG):" अपरिचित भागने अनुक्रम '\ d '"। एक विकल्प वर्बैटिम शाब्दिक '@" \ d {13} | \ d {10} "' '' 'चिह्न पर प्रयोग करेगा। – dasblinkenlight

0
       ┌─────┬─ 10 or 13 digits 
           ↓  ↓ 
ValidationRegEx = "(?<!\d)\d{10}\d{3}?(?!\d)" 
         ↑     ↑ 
         │     └─ negative lookahead to ensure 
         │     there is no other digit ahead 
         │ 
         └─ negative lookbehind to ensure 
          there is no other digit behind 
+0

जटिल होने का तरीका है। इसे आज़माएं: "\ b \ d {10} \ b | \ b \ w {13} \ b" –

+0

@ jordan. लोग - टिप्पणी में पोस्ट किया गया आपका समाधान गलत है। वैसे भी ... मैं लुकराउंड का उपयोग करके एक वैकल्पिक समाधान पोस्ट करना चाहता था, इसलिए कुछ उपयोगकर्ता इस अद्भुत फीचर को सीख सकते हैं। अगर मैं सीमाओं का उपयोग करना चाहता था, तो मैं '\ b \ d {10} \ d {3}? \ B' पैटर्न के साथ जाऊंगा। –

+0

मेरा तरीका ठीक काम करता है। यह क्यूए टीम द्वारा पहले से ही सही और परीक्षण किया गया है। –

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