2011-12-02 7 views
5

मैं एक नियमित अभिव्यक्ति बनाने की कोशिश कर रहा हूं जो स्ट्रिंग से दो विकल्पों में से सबसे लंबा विकल्प चुन लेगा।सबसे लंबा विकल्प चुनने के लिए नियमित अभिव्यक्ति

या तो 15 अक्षरों तक एक संख्यात्मक मान या 11 अक्षरों तक जो भी मूल्य हो।

अब तक मैं इस है:

^([0-9]{1,15}|.{1,11}) 

लेकिन उदाहरण के लिए स्ट्रिंग: '7elevenshopfood''7' के लिए छोटा हो जाता है, क्योंकि यह paranthesis के पहले भाग पर लग रहा है। और अगर मैं यह

^(.{1,11}|[0-9]{1,15}) 

करने के लिए स्विच स्ट्रिंग '123456789123456789''12345678912' के लिए छोटा है, क्योंकि यह फिर से अभिव्यक्ति के पहले भाग पर लग रहा है हो जाता है।

किसी भी व्यक्ति को अधिक regexp ज्ञान के साथ एक विचार है?

+0

क्या regex बोली/भाषा/उपकरण:

अपने मामले में आप की तरह कुछ के साथ कि आस-पास काम कर सकते हैं? – Qtax

उत्तर

6

इस प्रकार अधिकांश रेगेक्स बोलियां काम करती हैं, वैकल्पिक रूप से परीक्षण किए जाते हैं ताकि वे लिखे गए हों और पहला मिलान करने वाला हिस्सा खोज समाप्त कर देगा।

^(\d{12,15}|.{1,11}) 
+2

उत्कृष्ट जवाब। – FailedDev

+0

इतना आसान! : +1। – Toto

+0

जब आप इसे देखते हैं तो यह बहुत स्पष्ट है ... धन्यवाद! – Sonny

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