2012-04-26 9 views
8

A comprehensive regex for phone number validation में, स्वीकृत उत्तर में कई टिप्पणियां हैं।क्यों एक अन्य स्टैक ओवरफ्लो पोस्टिंग में विस्मयादिबोधक बिंदु टेलीफोन नंबर REGEX शामिल है?

string.replace("[^\d+!x]", "") 

तुरंत निम्नलिखित इस के साथ टिप्पणी नियमित अभिव्यक्ति का सुझाव दिया, एक और प्रश्नकर्ता पूछते हैं: टिप्पणियों में से एक, @jcmcbeth से, एक उपयोगकर्ता द्वारा प्रस्तुत टेलीफोन संख्या के अंकों प्राप्त करने के लिए उपयोग करने के लिए निम्नलिखित सरल नियमित अभिव्यक्ति का सुझाव why the !x part?, जिसे अगली टिप्पणी में उत्तर दिया गया है: The !x is there to keep any "x" character from getting stripped

विस्मयादिबोधक बिंदु ! को छोड़कर यह मुझे समझ में आता है। नियमित अभिव्यक्तियों में चरित्र वर्गों के लिए प्रलेखन को देखते हुए, मुझे नहीं लगता कि विस्मयादिबोधक बिंदु एक विशेष चरित्र है, और ऐसा लगता है कि x को इसके पहले एक विशेष चरित्र की आवश्यकता नहीं है। साथ ही, जुड़े प्रश्न में चर्चा से, मुझे कोई टिप्पणी नहीं दिखाई दे रही है कि एक विस्मयादिबोधक बिंदु एक टेलीफोन नंबर का हिस्सा हो सकता है (जो अस्वीकृत चरित्र वर्ग में शामिल होने की व्याख्या करेगा)।

क्या कोई मुझे बता सकता है कि विस्मयादिबोधक बिंदु क्यों मौजूद है? धन्यवाद।

+2

क्योंकि नियमित अभिव्यक्ति रोमांचक हैं! – bta

उत्तर

7

आप बिल्कुल सही हैं, x पर्याप्त है। ! सिर्फ एक वर्ण वर्ग या बाहर के अंदर एक शाब्दिक ! से मेल खाता है। इसका एकमात्र स्थान जिसका कोई विशेष अर्थ होता है वह तब होता है जब यह नकारात्मक दिखने का हिस्सा होता है या नकारात्मक दिखता है।

-3

निश्चित रूप से [^\d+!x] का अर्थ है "नहीं '\', नहीं 'd', नहीं '+', नहीं '!' और नहीं 'x'"।

[ ] एक चरित्र समूह है।

[^ ] वर्णों की सूची को अस्वीकार करता है।

+2

काफी नहीं। '\ d' अंकों के लिए शॉर्टेंड है; यह एक चरित्र वर्ग में भी काम करता है क्योंकि यह कहीं और करता है। यदि आप वास्तव में बैकस्लैश या 'डी' से मेल खाना चाहते थे तो आपको बैकस्लैश से बचना होगा:' [^ \\ d +! X] '। लेकिन यह लेखक का इरादा नहीं है। –

+0

बोली पर निर्भर करता है। पर्ल से पहले, '[^ \ d] 'निश्चित रूप से बैकस्लैश या डी (या न्यूलाइन) को छोड़कर किसी भी चरित्र का मतलब होगा। – tripleee

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