2013-05-15 15 views
5

के लिए मैं एक जावास्क्रिप्ट रेगुलर एक्सप्रेशन से मेल करने के लिए बनाने के लिए कोशिश कर रहा हूँ:Regex मिनट 9 संख्या

  • आवश्यक: 9 या अधिक संख्याओं।
  • वैकल्पिक: डैश, आगे स्लैश, प्लस और स्पेस वर्ण।
  • मना किया: किसी अन्य चरित्र

अब तक मैं

^[0-9-+\/\s]{9,}$ 

(मुझे लगता है कि) इस के साथ ही समस्या यह है कि यह गैर संख्यात्मक अनुमति दी पात्रों के साथ गिना जाता है कम से कम 9 तक पहुँचने के लिए है।

मैं इसे कैसे संशोधित कर सकता हूं ताकि यह केवल न्यूनतम 9 तक पहुंचने के लिए संख्याओं की गणना कर सके?

+1

तो उदाहरण के लिए, एक एसएसएन 000-11-2222, जहां यह 9 अंक है, लेकिन 11 वर्ण हैं? – hometoast

उत्तर

7

आप एक ही आरई में इस का समाधान चाहते हैं (जरूरी सलाह नहीं दी, लेकिन कभी कभी उपयोगी):

^[-+\/\s]*([0-9][-+\/\s]*){9,}$ 

या, यदि आप पहली और आखिरी वर्णों में अंक होना चाहते हैं:

^[0-9](^[-+\/\s]*[0-9]){8,}$ 

यह है: एक अंक, वैकल्पिक वर्णों के आठ या अधिक रनों के बाद, प्रत्येक अंक के साथ समाप्त होता है।

+1

'[- + \/\ s] +' -> यह '[- + \/\ s] *' नहीं होना चाहिए? डैश वैकल्पिक हैं। – nothrow

+0

@Yossarian: हाँ। धन्यवाद। –

+0

आप दिन बचा सकते हैं धन्यवाद – Amol

1

^([0-9][-+\/\s]*){9,}$ करना चाहिए।

+1

यह तब काम नहीं करता जब पहला अक्षर अंक नहीं है, जबकि यह अंत में गैर-अंकों की अनुमति देता है। –

3

आपको यह देखना होगा अग्रदर्शी उपयोग कर सकते हैं, अगर वहाँ 9 या अधिक अंकों कहीं भी कर रहे हैं

^(?=(\D*\d){9,})[\d/+ -]+$ 
-------------- 
     | 
     |->match further only if there are 9 or more digits anywhere 

या

^([/+ -]*\d){9,}[/+ -]*$ 
+0

+1, लेकिन '\ D'' [^ \ d] 'से बेहतर है। –

+0

@TimPietzcker हाँ वास्तव में महोदय .. आपके सुझाव के लिए धन्यवाद .. उत्तर – Anirudha

0

अग्रदर्शी

के साथ अपने सरल इस पद्धति का प्रयास करें :

^(?=([^\d]*\d){9,})[0-9-+\/\s]*$ 
+1

क्वांटिफायर '{9,} 'अंत में अनावश्यक है। और यह मेरे उत्तर के समान है ..: पी – Anirudha

+0

यदि आप {9,} का उपयोग करते हैं regex + का उपयोग करने से तेज है। क्योंकि 9 से कम वर्ण – Civa

+0

नहीं, तो धीमे होने की जांच करने की आवश्यकता नहीं है, यह धीमा है। आपने पहले से ही लुकहेड में लम्बा चेक किया है। फिर से क्यों? –

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