/ / हाइपेंस और अंकों का उपयोग करते हुए नियमित अभिव्यक्ति - रेगेक्स, भाषा-अज्ञेय

हाइपेन्स और अंकों का उपयोग कर नियमित अभिव्यक्ति - रेगेक्स, भाषा-अज्ञेयवादी

मैं इस तरह से एक नियमित अभिव्यक्ति बनाना चाहता हूं कि मानदंड में केवल हाइपेंस और अंकों की अनुमति होनी चाहिए

  1. हाइपेन पहली और आखिरी स्थिति में नहीं आना चाहिए
  2. हाइपेन के दोनों सिरों पर अंक होने चाहिए
  3. टेक्स्ट बॉक्स में n संख्या हाइपेंस और अंक हो सकते हैं

अग्रिम में धन्यवाद

उत्तर:

उत्तर № 1 के लिए 4

यहाँ @ एल योबो के रेगेक्स का छोटा संस्करण है आप प्रतिस्थापित कर सकते हैं [0-9] साथ में d और आप हाइफ़न को वैकल्पिक बना सकते हैं -? हाइफनलेस स्ट्रिंग्स के विशेष मामले को हटाने के लिए।

^d+(-?d+)*$

http://ideone.com/SRqPW


जवाब के लिए 3 № 2

यह नियमित अभिव्यक्ति इसे करना चाहिए:

^[0-9]+(-[0-9]+)*$

यह एक या एक से अधिक अंकों से मेल खाएगा, जिसके बाद एक या एक से अधिक अंकों के शून्य या अधिक अनुक्रम हो सकते हैं।


जवाब के लिए 2 № 3

मैं मानता हूं कि एक खाली स्ट्रिंग मान्य है। मुझे यकीन नहीं है कि मैं आपके तीसरे खंड को समझता हूं; क्या आपका मतलब है कि n कुछ भी हो सकता है, या क्या आपको चीजों को n घटनाओं तक सीमित करना है? मुझे यह भी सुनिश्चित नहीं है कि एक हाइफ़न के प्रत्येक छोर पर कितने अंक होने की आवश्यकता है; क्या यह संख्या एक या एक से अधिक है, या बिल्कुल एक है?

निम्नलिखित रेगेक्स उदाहरण के लिए 1-9-129-2-293-23 जैसे स्ट्रिंग की अनुमति देता है।

^(([0-9]+-[0-9]+)|[0-9]+)*$

क्योंकि प्रत्येक उपपट्ट को एक अंक के साथ शुरू और अंत होना चाहिए, यह सब के अंत में एक डिजिट मैच के लिए आवश्यक नहीं है कि सबस्ट्रिंग के रूप में यहां पोस्ट किए गए अन्य समाधानों में।


जवाब के लिए 2 № 4
^((d+-)+d+)*$

यह कहता है: आपको कुछ अंकों से शुरुआत करनी चाहिए, उसके बाद a -। जितनी बार चाहें उतनी बार दोहराएं, फिर कुछ और अंकों के साथ समाप्त होना चाहिए। उस * अंत में खाली तारों की अनुमति देने के लिए है।


जवाब के लिए 2 № 5

क्या यह काम करेगा?

(d+-)*d+

संपादित करें: "+" से "*" तक के रूप में हाइफ़न डॉन "t" आवश्यक नहीं लगता।

Edit2: डबल हाइफ़न को रोकने के लिए regex फिक्स्ड।


उत्तर के लिए 1 № 6

मैं "यह विश्वास नहीं कर सकता, मैंने इसे नियमित अभिव्यक्ति में एक अनुमान देकर प्राप्त किया है मुझे उम्मीद है कि यह ठीक काम करेगा

(d+(d*\-d+)+d*)|d+

-2 जवाब № 7 के लिए

आप इस regex का उपयोग करके देख सकते हैं: .[w-]*