समाधान सरल है: नकारात्मक अग्रदर्शी का उपयोग करें:
(?!.*abc$)
यह दावा है कि स्ट्रिंग abc
साथ अंत नहीं है।
आपने बताया कि आपको [abcde]*
के साथ समाप्त करने के लिए स्ट्रिंग की भी आवश्यकता है, लेकिन *
का अर्थ है कि यह वैकल्पिक है, इसलिए xxx
मैचों। मुझे लगता है कि आप वास्तव में [abcde]+
चाहते हैं, जिसका अर्थ यह भी है कि इसे [abcde]
के साथ समाप्त करने की आवश्यकता है। उस मामले में, कथनों हैं:
(?=.*[abcde]$)(?!.*abc$)
सकारात्मक और नकारात्मक lookarounds पर ट्यूटोरियल के लिए regular-expressions.info देखें।
मैं के बाद से मैं (भाषा से परिचित हालांकि मुझे विश्वास है कि दावे, यदि समर्थित, काम करेगा था नहीं कर रहा हूँ वास्तविक जावास्क्रिप्ट regex देने के लिए अनिच्छुक था - regular-expressions.info के अनुसार, जावास्क्रिप्ट सकारात्मक और नकारात्मक का समर्थन करता है भविष्य का ध्यान करना)।नुकीले और एलन मूर की टिप्पणी के लिए धन्यवाद, मुझे लगता है कि उचित जावास्क्रिप्ट regex यह है:
var regex = /^(?!.*abc$).*[abcde]$/;
ध्यान दें कि यह संस्करण (एलन मूर को ऋण के साथ) नहीं रह गया है सकारात्मक अग्रदर्शी की जरूरत है। यह बस .*[abcde]$
से मेल खाता है, लेकिन पहले ^(?!.*abc$)
पर जोर देता है।
'[abcde] *' वास्तव में होना चाहिए '[abcde]'? अन्यथा 'xxx' मैच ठीक है। – polygenelubricants