2012-03-24 15 views
5

मुझे नियमित अभिव्यक्ति की आवश्यकता है जो न्यूज़ीलैंड स्थानीय, मोबाइल और फ्रीकॉल (0800) फोन नंबरों को सत्यापित करने के लिए PHP और जावास्क्रिप्ट में काम करता है।न्यूजीलैंड फोन नंबरों को सत्यापित करने के लिए नियमित अभिव्यक्ति

Matches:  (09)1234567, (021)123456, (021)1234567, (027)123456, 0800 12345, 0800 1234578 
Non-Matches: (09)123456 , (021)12345 , (031)1234567, (027)12345 , 0800-1234, 080

नीचे एक नियमित अभिव्यक्ति मैं वेब पर पाया जाता है, लेकिन यह किसी कारण के लिए काम करने के लिए प्रतीत नहीं होता:

(^ ([0] \ घ {1})) (\ घ {7 } $) | (^ ([0] [2] \ घ {1})) (\ घ {6,8} $) | ([0] [8] [0] [0]) ([\ s]) (\ d {5,8} $)

क्या कोई उपरोक्त अभिव्यक्ति में सहायता कर सकता है? आपकी सहायता के लिए अग्रिम रूप से धन्यवाद।

अद्यतन - मैं इसे बाहर काम किया और समाधान के नीचे है:

$phone_number = preg_replace('/[^\d\(\)]/', '', $phone_number); 
$pattern = '/^(\((03|04|06|07|09)\)\d{7})|(\((021|022|025|027|028|029)\)\d{6,8})|((0508|0800|0900)\d{5,8})$/'; 

उत्तर

2

क्यों उन सभी कोष्ठक और कोष्ठक?

^(\(0\d\)\d{7}|\(02\d\)\d{6,8}|0800\s\d{5,8})$ 

आपको इसे काम करने के लिए कोष्ठक की जोड़ी में सब कुछ लपेटना नहीं है। वह वूडू प्रोग्रामिंग है। उदाहरण के लिए, ([0][8][0][0]) बस 0800 है।

+0

यह अच्छा लग रहा है और मैंने इसे PHP में आजमाया लेकिन यह किसी कारण से काम नहीं करता था। कोई भी मदद कर सकता है? – Chris

+0

@ क्रिस: मैं बस इतना कह सकता हूं कि अभिव्यक्ति स्वयं ही काम करती है (http://rubular.com/r/ynr28Fcwui)। आपको PHP दस्तावेज़ों में देखना चाहिए। – Tomalak

1

इस बारे में सुनिश्चित करने के लिए अपने प्रश्न में एनजेड फोन नंबरों के स्वरूपण के बारे में पर्याप्त जानकारी नहीं है, लेकिन एक चाल पहले सभी गैर अंकों के पात्रों को हटाने और अंकों की संख्या के लिए उस परीक्षण के बाद हो सकती है (जहां तक ​​मैं देख सकते हैं कि यह 9 अंक होना चाहिए?)। कुछ ऐसा:

var phonenr = '(09)1234567'.replace(/[\(\)\s\-]/g,'') 
    ,valid = phonenr.length === 9; 
// or check if it's all digits, starting with 0 as well as the length 
valid = /^0\d+$/.test(phonenr) && phonenr.length === 9 
+0

न्यूजीलैंड फ़ोन नंबरों का प्रारूपण है: मोबाइल मिनट: xxx xxx xxx अधिकतम: xxx XXXX XXXX लैंडलाइन: xx XXX XXXX या 0800 xxx xxx 0508 xxx xxx – Chris

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