मैं चाहता हूं कि उपयोगकर्ता केवल इनपुट 0-9 और केवल एक बार "।"PHP रेगेक्स - मान्य फ्लोट नंबर
patt = /[^0-9(.{1})]/
1.2222 -> true
1.2.2 -> false (only once '.')
मेरी मदद करें, धन्यवाद!
मैं चाहता हूं कि उपयोगकर्ता केवल इनपुट 0-9 और केवल एक बार "।"PHP रेगेक्स - मान्य फ्लोट नंबर
patt = /[^0-9(.{1})]/
1.2222 -> true
1.2.2 -> false (only once '.')
मेरी मदद करें, धन्यवाद!
आप is_numeric()
का उपयोग इस चेतावनी के साथ कर सकते हैं कि यह आमतौर पर एक से अधिक से अधिक स्वीकार करता है (उदा। 1e4
)।
यदि आप नियमित अभिव्यक्तियों के साथ अनुभव नहीं करते हैं तो केवल is_numeric
का उपयोग क्यों न करें।
आपके रेगेक्स के रूप में: .
सभी वर्णों से मेल खाता है, \.
एक डॉट से मेल खाता है। {1}
आवश्यक नहीं है। और मुझे कोई संकेत नहीं है कि आप [^ ... ]
के साथ क्या करने का प्रयास कर रहे हैं। regular expressions tutorial पढ़ें यदि आप वास्तव में अपने कोड में कहीं भी नियमित अभिव्यक्तियों का उपयोग करना चाहते हैं।
http://php.net/manual/en/function.is-float.php का उपयोग क्यों नहीं करें? लेकिन किसी भी तरह, RegEx ^[\d]+(|\.[\d]+)$
मजेदार होगा!
/^-?(?:\d+|\d*\.\d+)$/
यह सामान्य फ्लोट्स से मेल खाता है उदा। 3.14
, केवल दशमलव भाग के लिए shorthands उदाहरण के लिए .5
और पूर्णांक उदा। 9
साथ ही नकारात्मक संख्याएं।
यह आपके लिए
$re = "~ #delimiter
^ # start of input
-? # minus, optional
[0-9]+ # at least one digit
( # begin group
\. # a dot
[0-9]+ # at least one digit
) # end of group
? # group is optional
$ # end of input
~xD";
जो खोज रहे हैं यह केवल स्वीकार करता है "123" या "123.456", नहीं ".123" या "14E + 15" है। यदि आपको इन रूपों की भी आवश्यकता है, तो is_numeric
+1 चरण-दर-चरण टिप्पणी के लिए – alex
डी के लिए क्या है? – AntonioCS
@AntonioCS यह $ [PCRE संशोधक के बारे में रेफरी] (http://php.net/manual/en/reference.pcre.pattern.modifiers.php) 'डी (PCRE_DOLLAR_ENDONLY) यदि यह संशोधक है सीमांकक समाप्त करने के लिए है सेट, केवल स्ट्रिंग स्ट्रिंग के अंत में पैटर्न मिलान में एक डॉलर मेटाएक्टेक्टर। इस संशोधक के बिना, एक डॉलर अंतिम चरित्र से तुरंत मेल खाता है यदि यह एक नई लाइन है (लेकिन किसी भी अन्य न्यूलाइन से पहले नहीं)।यदि संशोधक सेट किया गया है तो यह संशोधक अनदेखा किया जाता है। पर्ल में इस संशोधक के बराबर नहीं है। एफवाईआई: एक्स विस्तारित है: किसी भी व्हाइटस्पेस वर्णों को दबाने के लिए – MediaVince
नियमित अभिव्यक्ति मिलान स्ट्रिंग पैटर्न के लिए हैं। आप इनपुट स्ट्रिंग के प्रारूप (लेकिन वास्तविक मूल्य) मान्य के बाद स्पष्ट रूप से नहीं कर रहे हैं, तो आप भी
filter_var("1.33", FILTER_VALIDATE_FLOAT);
यकीन है कि इनपुट एक नाव मूल्य के रूप में इस्तेमाल किया जा सकता बनाने के लिए उपयोग कर सकते हैं। यह FALSE
लौटाएगा यदि यह एक फ्लोट नहीं है और अन्यथा फ्लोट या पूर्णांक मान नहीं है। कोई भी type juggling नियम लागू होते हैं।
इस regex:
\d*(?:\.\d+)?
परिणाम देगा:
123 -> true
123.345 -> true
123. -> true
.345 -> true
0.3345 -> true
हालांकि, अगर आप इसे का उपयोग क्योंकि regex भी शून्य लंबाई इनपुट की अनुमति से पहले इनपुट के खालीपन जांच करना चाहिए।
आपको कोष्ठक में परिवर्तन को संलग्न करने की आवश्यकता है, अन्यथा स्टार्ट-ऑफ-स्ट्रिंग एंकर केवल पूर्णांक के साथ लागू किया जाएगा, और अंत-स्ट्रिंग एंकर केवल दशमलव के साथ लागू होगा। –
अच्छा पकड़, तय। –
यह मेरे लिए आईएनटी के लिए भी काम करता है। धन्यवाद। – Strabek