2010-03-05 21 views
11

मुझे जावास्क्रिप्ट में एक फोन नंबर सत्यापित करने की आवश्यकता है। आवश्यकताएँ हैं:जावास्क्रिप्ट फोन नंबर सत्यापन

वे 10 अंक, कोई अल्पविराम, कोई डैश, बस नंबर, और नहीं सामने 1+

यह है कि क्या मैं इतना लिखा दूर

है होना चाहिए
function validatePhone(field,alerttxt) { 
    with (field) { 
     if(value.length > 10) { 
      alert(alerttext); 
      return false; 
     } 
     for(i = 0; i < value.length; i++) { 
      if(parseInt(value[i]) == NaN) { 
       alert(alerttxt); 
       return false; 
      } 
     } 
     return true; 
    } 
} 
function validateForm(thisform) { 
     if (validatePhone(phone,"Invalid phone number")==false) { 
      phone.focus(); 
      return false; 
     } 

    } 
} 
    <form action="post.php" method="post" id="contactform" onsubmit="return validateForm(this)"> 
    <ol> 
     <label for="phone">Your phone <span class="red"></span></label> 
     <input id="phone" name="phone" class="text" /> 
     </li> 
    </ol> 
    </form> 

लेकिन जाहिर है, यह काम नहीं करता है। मैं validatePhone() फ़ंक्शन कैसे लिख सकता हूं ताकि यह काम करे?

+6

क्या एक असभ्य प्रणाली है। लोगों को रिक्त स्थान और डैश दर्ज करने दें, फिर उन्हें अनदेखा करें। और अंतरराष्ट्रीय फोन नंबरों के बारे में क्या? – Quentin

+0

यह एक स्कूल असाइनमेंट की तरह दिखता है। गंभीर उपयोग के लिए, आपको * नियमित अभिव्यक्तियों का उपयोग नहीं करना चाहिए [फ़ोन नंबरों को सही तरीके से सत्यापित करें] (http://stackoverflow.com/a/4338544/1269037)। –

+0

@DanDascalescu असल में, उस समय, यह एक स्कूल असाइन नहीं था। RentACoder –

उत्तर

29
phone = phone.replace(/[^0-9]/g, ''); 
if(phone.length != 10) { 
    alert("not 10 digits"); 
} else { 
    alert("yep, its 10 digits"); 
} 

यह मान्य और/या आपकी आवश्यकताओं के आधार को सही, सभी गैर अंक को दूर करेगा।

+1

क्यों न केवल मिलान का उपयोग करें? – Marius

+5

जैसा कि मैंने कहा "मान्य और/या सही" क्यों न सिर्फ मेल खाता है। इसका बहुत खराब उपयोगकर्ता अनुभव किसी को फ़ोन नंबर संस रिक्त स्थान या डैश में प्रवेश करने के लिए मजबूर करने के लिए मजबूर करता है जब उन्हें निकालना इतना आसान होता है। – Erik

+0

धन्यवाद, मुझे वास्तव में 'सुधारात्मक' regex पसंद है :-) –

0

फिक्स्ड समारोह:

function validateForm(thisform) { 
     if (validatePhone(thisform.phone,"Invalid phone number")==false) { 
      thisform.phone.focus(); 
      return false; 
     } 
     return true; 
} 
+0

पर बस एक शर्मीली नौकरी मैं फ़ंक्शन की शुरुआत में (इसफॉर्म) के साथ शामिल करना भूल गया, लेकिन वास्तव में मैंने इसे लिखा) –

+1

लेकिन आपके पास अतिरिक्त "}" प्रतीक भी है – antyrat

7

आप रेगुलर एक्सप्रेशन का इस्तेमाल कर सकते हैं:

function validatePhone(field, alerttext) { 
    if (field.match(/^\d{10}/)) { 
     return true; 
    } 
    alert(alerttext); 
    return false; 
} 
+0

* वास्तव में, नियमित रूप से अभिव्यक्तियों का उपयोग नहीं करना चाहिए [फ़ोन नंबरों को सही तरीके से सत्यापित करें] (http://stackoverflow.com/a/4338544/1269037)। –

+0

उनकी आवश्यकता कहती है कि उन्हें बिना किसी और के 10 अंकों के प्रारूप की जांच करनी चाहिए। तो यह नियमित अभिव्यक्ति जांच ठीक होनी चाहिए। आप सही हैं: मुझे ऐसे एप्लिकेशन पसंद नहीं हैं जो मुझे एक विशिष्ट फोन नंबर प्रारूप में मजबूर करें। न्यूनतम लंबाई के लिए एक चेक, संख्याओं के लिए और कुछ() - +/किसी भी क्रम में वर्ण ठीक हो सकते हैं, जैसे: '^ [0-9() +/-] {5,} $' – arnep

1

कोड केवल संख्या ब्रेसिज़ और डैश

function DoValidatePhone() { 
    var frm = document.forms['editMemberForm'];     
    var stripped = frm.contact.value; 
    var isGoodMatch = stripped.match(/^[0-9\s(-)]*$/); 
    if (!isGoodMatch) { 
     alert("The Emergency Contact number contains invalid characters." + stripped); 
     return false; 
    } 
} 
10

गूगल के libphonenumber सत्यापन और दुनिया भर में फोन नंबर के स्वरूपण के लिए बहुत उपयोगी है सिवाय करने के लिए। यह एक आसान, कम गूढ़, और एक RegEx का उपयोग करने से अधिक मजबूत है, और यह जावास्क्रिप्ट, रूबी, पायथन, सी #, PHP, और उद्देश्य-सी स्वाद में आता है।

+1

* यह *। लोग बस यह समझ में नहीं आ रहे हैं कि [नियमित अभिव्यक्ति निष्पक्ष समाधान हैं] (http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links/21925491#21925491) जब यह आता है असली दुनिया डेटा को मान्य करने के लिए। –

-1
function validate(phoneString){ 

    reg = /^([+|\d])+([\s|\d])+([\d])$/; 

    return reg.test(phoneString); 

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