2009-04-24 14 views
8

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

एक यह है कि अल्फा-न्यूमेरिक मूल्य के किसी भी लम्बाई की अनुमति देता है:

@"^\s*(?<NUM>[0-9]{10})" 

मैं कैसे 11 की लंबाई के एक संख्यात्मक स्ट्रिंग नहीं मिल सकता है:

@"^\s*(?<ALPHA>[A-Z0-9]+)\s*" 

और केवल अन्य संख्यात्मक मानों की अनुमति देता है NUM regex द्वारा पकड़ने के लिए।

उत्तर

12

मुझे लगता है कि आप जो कहने की कोशिश कर रहे हैं वह यह है कि आप 10 से अधिक अंकों की अनुमति नहीं देना चाहते हैं। तो, रेगेक्स के अंत को निर्दिष्ट करने के लिए बस $ जोड़ें।

उदाहरण: @"^\s*(?[0-9]{10})$"


यहाँ मेरी मूल जवाब है, लेकिन मुझे लगता है कि मैं तुम्हें बहुत सटीक पढ़ें।

string myRegexString = `@"(?!(^\d{11}$)` ... your regex here ...)"; 

पढ़ता है कि "जबकि आगे नहीं है, शुरू, 11 अंक, अंत"

+0

धन्यवाद है कि मैं के लिए क्या देख रहा था ... – CheGueVerra

0

लंबाई 10 स्ट्रिंग के बाद कुछ गैर-संख्यात्मक मिलान करें। मेरा regex-foo यह अच्छा नहीं है, लेकिन मुझे लगता है कि आपने इसे ठीक लंबाई 10 की संख्यात्मक स्ट्रिंग को पकड़ने के लिए वहां स्थापित किया है, लेकिन उसके बाद आप इसके बाद कुछ भी मेल नहीं खाते हैं, इसलिए लंबाई 11 स्ट्रिंग भी मेल खाती है। संख्या के अंत से परे मिलान करने का प्रयास करें और आप अच्छे होंगे।

0

आप विकल्प का प्रयास कर सकते हैं?

^\s*(?\d{1,10}|\d{12,}) 
4

यदि यह एक पंक्ति है, तो आप निर्दिष्ट कर सकते हैं अपने मैच में इस तरह, पंक्ति के अंत में होने चाहिए। शुद्ध ...

^\s*([0-9]{10})\z 

यही 1234567890 स्वीकार करेंगे लेकिन 12345678901.

0

यह अस्वीकार करने से पहले और बाद के सभी अंक केवल 10 अंक व्हाइटस्पेस के मनमाने ढंग से नंबर मेल और अनुमति चाहिए।

गैर पर कब्जा संस्करण: (केवल मेल खाता है, मेल नहीं खाते अंक संग्रहीत नहीं हैं)

^\s*(?:\d{10})\s*$ 

कैप्चरिंग संस्करण:

^\s*(\d{10})\s*$ 
(मिलान अंक, के रूप में $ 1 या \ 1 उपसमूह 1 में उपलब्ध हैं)
0

आप केवल संख्या है कि 10 अंकों के होते हैं मैच के लिए सिर्फ $ का उपयोग कर पीछे लंगर जोड़ने के इस तरह कोशिश कर रहे हैं:

^\s*(?:[0-9]{10})\s*$ 

वह किसी भी संख्या से मेल खाएगा जो कि बिल्कुल 10 अंकों लंबा है (दोनों तरफ वैकल्पिक स्थान के साथ)।

2

क्या आप का मतलब है कि आप से तक 10 अंकों से मेल खाना चाहते हैं?इस प्रयास करें:

@"^\s*[0-9]{1,10}\s*$" 
0

var pattern =/\b[0-9]{10}$\b/; 
 

 
// the b modifier is used for boundary and $ is used for exact length