2013-07-04 3 views
6

कोई उपयोगकर्ता एक फोन नंबर भर सकता है। (केवल अंक और डैश, डैश अनिवार्य नहीं कर रहे हैं)सीमित संख्याओं के लिए Regex, असीमित मध्य डैश?

वह के रूप में ज्यादा (बीच) डैश (-), लेकिन अंक की कुल संख्या हो सकती है होना चाहिए 10.

I've managed एक regex का उपयोग कर लेखन संख्या में "-" के सकारात्मक अग्रदर्शी:

^(?=.*\-)[0-9\-]+$

लेकिन मैं उस के साथ 2 समस्याएं हैं:

  • डैश (मेरे रेगेक्स में) शुरुआत में और अंत में भी हो सकता है और यह वैध मान्य नहीं है।

  • मैं 10 अंकों के प्रतिबंध लागू करने में सफल नहीं रहा हूं।

पेज। वैध उदाहरण के उदाहरण:

050-6783828 050-678-38-28 0506783828

नहीं वैध:

-0506783826 0506783826- 050678--3826

p.s.2 टी नोटिस कृपया उसका सवाल रेगेक्स के रूप में टैग किया गया है। मैं जेएस (गैर-रेगेक्स) समाधान की तलाश नहीं कर रहा हूं।

+0

मेरा RegExp दृष्टिकोण बस होगा। स्थान (/ -/g, "") –

+0

@AlexK। हाँ। लेकिन कभी-कभी आप किसी निश्चित विषय पर अधिक ज्ञान प्राप्त करना चाहते हैं ... (rgx) –

उत्तर

8

मुझे लगता है कि आप कुछ इस तरह हैं:

^\d(?:-?\d){9}$ 
  • अंक के साथ प्रारंभ।
  • 9 बार: वैकल्पिक डैश और दूसरा अंक।

कार्य उदाहरण: http://rubular.com/r/CrgTOrXC8E

+0

मेरे लिए, सबसे कष्टप्रद हिस्सा यह है कि मैं सकारात्मक दिखने की उम्मीद कर रहा था, और इसे आपके कामकाजी उदाहरण में नहीं मिला ..... जो मुझे वास्तव में बेवकूफ महसूस करता है। –

+1

निराश करने के लिए खेद है: '' 'लुईकेड इन पैटर्न में * बहुत * आम हैं - यदि आप एक और आवश्यकता जोड़ना चाहते हैं, तो शायद उन्हें एक लुकहेड की आवश्यकता होगी। – Kobi

2
^[0-9](-?[0-9]){8}-?[0-9]$ 

पर एक अंकों शुरू और समाप्त, वैकल्पिक पानी का छींटा और अंकों के अलावा वैकल्पिक पानी का छींटा के 8 समूहों पिछले अंक

केवल एक पानी का छींटा eatch के बीच की अनुमति दी है इससे पहले कि पड़ोसी अंक

var pat = new RegExp('^[0-9](-?[0-9]){8}-?[0-9]$') 
// correct 
console.log(pat.test('0506783828')) 
console.log(pat.test('0-5-0-6-7-8-3-8-2-8')) 
// incorrect 
console.log(pat.test('0506783828-')) 
console.log(pat.test('-0506783828')) 
console.log(pat.test('05--06783828')) 
+0

कार्य करना। आपका बहुत बहुत धन्यवाद। –

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