2015-05-26 6 views
6

regex का उपयोग करते हुए की कुल लंबाई, मैं जाँच कर सकते हैं अगर यह दशमलव है या नहींचेक दशमलव और संख्या

^\d*\.?\d*$ 

लेकिन क्या मैं नियंत्रित करना चाहते हैं उन अंकों की कुल लंबाई है।

(^\d*\.?\d*$){1,10} 

लेकिन मैं अभी भी इसे नियंत्रित नहीं कर सकता।

2 के बाद दिन बाद, मेरा अंतिम solution

(?=^\d*\.?\d*$)^.{1,10}$ 

Regular expression visualization

Debuggex Demo

+1

'*' 'के बाद \ d' निकालें नहीं है। – Maroun

+0

आप किस इंजन/भाषा का उपयोग कर रहे हैं? यह कुछ इंजनों के साथ एक सरल regex में आसान नहीं होगा। –

+0

मैं सी # @ डेनिससेगुरेट –

उत्तर

5

यहाँ एक समाधान है:

^(?!.{10})\d*\.?\d*$ 

यह जाँच करेगा पूरी संख्या 10 से अधिक वर्ण नहीं है।

आप पूरी संख्या जाँच करना चाहते हैं 10 से अधिक अंक (डॉट गिनती नहीं), तो आप उपयोग कर सकते हैं

^((?!.{11})\d*\.\d*|(?!.{10})\d*)$ 
+0

सेग्यूरेट, आपके महान सुझाव के लिए +1 वोट, यह मुझे बहुत मदद करता है। लेकिन मुझे अभी भी सवाल है, अगर मैं 10 अंकों को सीमित करना चाहता हूं, तो मुझे '^ (?!। {11}) \ d * \ बनाना होगा। ? \ d * $ ', अगर मुझे 11 अंकों की सीमा चाहिए, तो मुझे' .. {12} .. 'बनाना होगा। तो क्या कोई और तरीका है? बहुत बहुत धन्यवाद –

+0

@FrankMyatThu क्या मेरा संपादन आपकी चिंता का उत्तर देता है? –

2
(^\d*\.?\d*$){1,10} 
    ↑  ↑ 

* मतलब है, शून्य या अधिक है। तो आपके रेगेक्स का अर्थ है "शून्य या अधिक बार, 1 से 10 गुना", इसलिए {1,10} इस मामले में अनावश्यक है। आपको * को हटाने की आवश्यकता है या {1,10} केवल उन हिस्सों पर लागू करें जिनके पास यह नहीं है।

^\d*(\.?\d{0,10})$ 

यह संख्या डॉट के बाद 10 अंक से ऊपर है कि मेल खाता है:

उदाहरण के लिए, यदि आप अपने regex को बदल सकते हैं। आप कुल में 10 अंक है कि एक नाव संख्या का मिलान करना चाहते हैं, तो आप नकारात्मक अग्रदर्शी उपयोग कर सकते हैं (जैसा कि @ DenysSéguret पहले से ही अपने जवाब +1 में उल्लेख किया है):

(?!.{10})\d*\.?\d* 

यह मेल खाता है \d*\.?\d*$ केवल अगर यह अपनी लंबाई < 10 (डॉट सहित)।

+1

यह 10 गुना अधिक स्वीकार कर रहा है। – Manwal

+0

@ मणवाल संपादित। – Maroun

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