2010-07-11 5 views
6

चलो कहते हैं कि मैं एकस्वरूप नंबर/jQuery

  • प्रारूप स्ट्रिंग "- XXX - XXX XXXX" करते हैं (एक फोन नंबर फ़ॉर्मेट करने के लिए), या किसी अन्य प्रारूप स्ट्रिंग, जिसमें एक्स खड़ा

    : एक नंबर
  • के लिए मैं प्रारूप स्ट्रिंग में स्वरूपण (रिक्ति, डैश आदि) की रक्षा करने के लिए, लेकिन एक संख्या के लिए प्रत्येक एक्स का आदान-प्रदान और स्रोत स्ट्रिंग में सभी स्वरूपण ड्रॉप

उदाहरण चाहते हैं

  • इनपुट: "abc + डी (123) 4567890", प्रारूप स्ट्रिंग: "XXX - XXX - XXXX", आउटपुट: "123 - 4567890"
  • इनपुट "एबीसी 1 2 3 4567890", स्वरूप स्ट्रिंग: "एक्स: एक्स! XXXXX, XXX", आउटपुट: "1: 2! 34567,890"
  • इनपुट "1234567890", प्रारूप स्ट्रिंग: "(XXX) XXX-XXXX", आउटपुट: "(123)456-7890 "

मैं सोच रहा हूँ मैं स्रोत स्ट्रिंग ('' में foreach चरित्र) के माध्यम से पुनरावृत्ति द्वारा संख्या हड़पने सकता है, लेकिन मुझे यकीन है कि कैसे मैं तो यह एक साथ सुंदर ढंग से सही प्रारूप करने के लिए रख सकते हैं नहीं कर रहा हूँ। शायद एक jQuery समारोह है जो यह पहले से ही करता है?

उत्तर

5

यहाँ एक तरीका है यह करने के लिए:

function formatPhoneNumber(input, format) { 
    // Strip non-numeric characters 
    var digits = input.replace(/\D/g, ''); 

    // Replace each "X" with the next digit 
    var count = 0; 
    return format.replace(/X/g, function() { 
     return digits.charAt(count++); 
    }); 
} 
4
"abc+d(123)4567890" 
.replace(/\D/g, "") 
.replace(/(\d{3})(\d{3})(\d{4})/, "$1 - $2 - $3") 

सबसे पहले हम गैर अंकों (\ D) को हटाते हैं, फिर हम उन्हें समूहित करते हैं, और अंततः हम अपने प्रतिस्थापन टेक्स्ट में समूहों का उपयोग करते हैं।

+0

खेद है कि मैं उस प्रारूप स्ट्रिंग अलग हो सकता है पर स्पष्ट नहीं किया गया था (जैसे एक्स-XXX-XX-XX को बदल सकता है) तो यह अवश्य होना चाहिए कि सामान्य रूप से प्रारूप के साथ सामना करने में सक्षम। – Alex