मैंने अपने पैरों को गीला करने के लिए थोड़ा सा रेगेक्स सीखा है, लेकिन यह अभी भी मेरे लिए थोड़ा जटिल है। मुझे दशमलव-डिग्री (उदाहरण) में उपयोगकर्ता द्वारा इनपुट निर्देशांक का एक सेट लेने की आवश्यकता है:
$ अक्षांश = -42.323432 $ देशांतर = 176.232123
और जांचें कि क्या वे "का उपयोग कर वैध हैं preg_match()
PHP में समारोह। सरल लगता है, लेकिन मैं अपने जीवन के लिए नियमित अभिव्यक्ति नहीं लिख सकता जो सुनिश्चित करेगा कि कोई बुरा डेटा नहीं हो रहा है। मैं उत्तर-पूर्व की जांच करूँगा और एक-दूसरे से अलग हो जाऊंगा preg_match()
एक का उपयोग कर दो बार के माध्यम से पुनरावृत्त किया जाएगा foreach
पाश।
मुझे लगता है कि मैंने सभी आवश्यक शर्तों को समझ लिया है:
- पहला चरित्र या तो एक ऋण, प्लस, या एक संख्या हो सकता है। Minuses और प्लस वैकल्पिक हैं।
- दशमलव बिंदु से पहले संख्याओं की कुल संख्या 1 से 3 हो सकती है, लेकिन 0 या उससे ऊपर 3 नहीं हो सकती है।
- इसलिए दूसरी जगह, या चौथी जगह में दशमलव बिंदु होना चाहिए। (2.2332, -123.422)
- पूरी स्ट्रिंग में बिल्कुल एक दशमलव बिंदु होना चाहिए, पूरे स्ट्रिंग में 0 या 1 minuses या pluses हो सकते हैं।
- मैं दशमलव बिंदु के बाद परिशुद्धता के कम से कम 3 दशमलव स्थानों चाहता हूँ। कोई अधिकतम सीमा नहीं है (मैं इसे आसानी से 6 डीपी तक ले जाऊंगा)
- यदि संख्याओं के अलावा कोई वर्ण हैं, दशमलव बिंदु, और वैकल्पिक प्लस और माइनस, इसे अस्वीकार करें।
इसके बाद, मैं अटक गया हूं! रेगेक्स अभिव्यक्ति लिखने में किसी भी मदद की सराहना की जाएगी। धन्यवाद ...
उत्तर:
उत्तर № 1 के लिए 7आइए इसे एक स्टैब लें:
/^[+-]?[0-9]{1,3}.[0-9]{3,}z/
टूटा:
^ - start of string
[+-]? - zero or one from set of `+` and `-`
[0-9]{1,3} - 1 to 3 digits
. - decimal point
[0-9]{3,} - 3 or more digits
z - end of string
(ध्यान दें, यह अनचाहे है;))