मेरी नियमित अभिव्यक्ति = "(d+)1+"
मेरा उद्देश्य 2323, 1212, 345345 जैसे बार-बार आने वाले पेटेंट पर कब्जा करना है, जिनके अलग-अलग अंक हैं। वर्तमान रेगेक्स भी 11,22,11111 पर कब्जा करता है जिसे मुझे बाहर करने की आवश्यकता है
उदाहरण - इनपुट के लिए = 44556841335158684945454545
माचिस हैं 44 55 45454545 मिलान होना चाहिए - 45454545
मैं एक रेगेक्स कैसे लिखता हूं जिसमें 44 और 55 को छोड़कर अलग-अलग अंक हैं
उत्तर:
जवाब के लिए 0 № 1"दो अलग-अलग संख्याओं को दोहराया" कहने के लिए आप कोशिश कर सकते हैं
((d)(?!2)d)1
कोष्ठक पर कब्जा बाईं ओर से गिना जाता है; इसलिए 1
कोष्ठक की पूरी बाहरी जोड़ी से मेल खाता है, और (?!2)
पहले अंक के चारों ओर आंतरिक कोष्ठकों को संदर्भित करता है, दूसरे अंक को विवश करता है ताकि यह पहले के समान न हो।
डेमो: https://regex101.com/r/5f2CEf/1
जाहिर है, एक जोड़ें +
मैच के सभी आसन्न दोहराव को कवर करने के लिए अंत में।
उत्तर № 2 के लिए 1
यहाँ मुझे विश्वास है कि आप चाहते हैं:
(d)((?!1)d)
थोड़ा स्पष्टीकरण:
(d)
d एक अंक से मेल खाता है ([0-9 के बराबर)
((?!1)d)
नकारात्मक लुकहेड
(?!1)
नीचे दिए गए Regex से मेल नहीं खाता है
1
1 कैप्चरिंग ग्रुप द्वारा हाल ही में मेल किए गए समान टेक्स्ट से मेल खाता है
d
एक अंक से मेल खाता है ([0-9 के बराबर)
यहाँ एक त्वरित जेएस डेमो है:
var s = "44556841335158684945454545"
console.log(s.match(/(d)((?!1)d)/g))