आपकी टीम की सलाह लगभग सही है, जो गलती की गई थी, उसे छोड़कर। एक बार जब आपको पता चल जाता है कि आप इसे क्यों नहीं भूलेंगे। इस गलती पर एक नजर।
/^(7|8|9)\d{9}$/
यह क्या करता है:
^और $एंकर युक्त मैचों को दर्शाता है, जो यह दावा करता है कि इन एंकरों के बीच का सबपैटर्न पूरा मैच है। स्ट्रिंग केवल तभी मेल खाएगी जब सबपैटर्न उस से पूरी तरह से मेल खाए, न कि केवल एक सेक्शन से।
()एक कैप्चरिंग ग्रुप को दर्शाता है ।
7|8|9अर्थ है दोनों में से किसी से मेल खाते 7, 8या 9। यह विकल्प के साथ ऐसा करता है , जो कि पाइप ऑपरेटर |करता है - प्रत्यावर्तन के बीच बारी-बारी से। इस प्रत्यावर्तन के बीच प्रत्यावर्तन: यदि प्रथम प्रत्यावर्तन का मिलान नहीं किया जाता है, तो इंजन को प्रत्यावर्तन स्थान से पहले लौटना पड़ता है, अल्टरनेशन के मिलान के दौरान, अल्टरनेशन के मिलान को जारी रखने के लिए; जबकि चरित्र वर्ग क्रमिक रूप से आगे बढ़ सकता है। इस मैच को रेगेक्स इंजन पर देखें जिसमें ऑप्टिमाइज़ेशन अक्षम है:
Pattern: (r|f)at
Match string: carat

Pattern: [rf]at
Match string: carat

\d{9}नौ अंकों से मेल खाता है। \dएक शॉर्टहैंड मेटाचैकर है, जो किसी भी अंक से मेल खाता है।
/^[7|8|9][\d]{9}$/
देखो क्या करता है:
^और $लंगर वाले मैचों को भी दर्शाता है।
[7|8|9]एक चरित्र वर्ग है । सूची में से कोई भी वर्ण 7, |, 8, |, या 9मिलान किया जा सकता है, इस प्रकार |गलत तरीके से में जोड़ा गया है। यह बिना बैकग्राउंड के मैच करता है।
[\d]एक चरित्र वर्ग है जो मेटाचैकर का निवास करता है \d। एक चरित्र वर्ग और एकल मेटाचैकर के उपयोग का संयोजन एक बुरा विचार है, वैसे, चूंकि अमूर्तता की परत मैच को धीमा कर सकती है, लेकिन यह केवल एक कार्यान्वयन विवरण है और केवल कुछ रेगेक्स कार्यान्वयन पर लागू होता है। जावास्क्रिप्ट एक नहीं है, लेकिन यह उपपट्ट को थोड़ा लंबा कर देता है।
{9} इंगित करता है कि पिछला एकल निर्माण कुल नौ बार दोहराया गया है।
इष्टतम रेगेक्स है /^[789]\d{9}$/, क्योंकि /^(7|8|9)\d{9}$/अनावश्यक रूप से कैप्चर करता है जो अधिकांश रेगेक्स कार्यान्वयन पर एक प्रदर्शन में कमी लाता है (जावास्क्रिप्टएक होता है, प्रश्न varको कोड में कीवर्ड का उपयोग करता है , यह शायद जावास्क्रिप्ट है)। का उपयोगphpजो प्रीग मैचिंग के लिए पीसीआरई पर चलता है, बैकट्रैकिंग की कमी को दूर करेगा, हालांकि हम PHP में भी नहीं हैं, इसलिए []वैकल्पिक के बजाय कक्षाओं का उपयोग करने से |प्रदर्शन बोनस मिलता है क्योंकि मैच बैकट्रैक नहीं करता है, और इसलिए दोनों मैच और आपके उपयोग से तेजी से विफल होते हैं। पिछले नियमित अभिव्यक्ति।
(7|8|9)और[789]समतुल्य नहीं हैं, क्योंकि पहला कब्जा कर रहा है, बाद वाला नहीं।(?:7|8|9)दूसरी ओर बराबर होगा (मुझे लगता है कि आप जानते हैं कि निश्चित रूप से ...)।