निम्नलिखित में, फ्लोट (x, y) का अर्थ है x कुल अंकों वाली संख्या और उनमें से y दशमलव हो सकते हैं।

मैं एक HTML इनपुट फ़ील्ड के लिए क्लाइंट साइड सत्यापन करने का प्रयास कर रहा हूं। फ़ील्ड डेटा प्रकार फ्लोट (x, y) के साथ एक MySQL कॉलम से मेल खाती है। मुझे पता है कि मैं बहुत सारे 'ओआरएस' के साथ फ्लोट (5,2) के लिए एक पैटर्न परिभाषित कर सकता हूं। क्या इसके लिए रेगेक्स उत्पन्न करने का कोई प्रभावी तरीका है कि मैं इसे अपने वेब दस्तावेज़ में एन्कोड कर सकता हूं?

"\d+(.\d{1,y})?" निर्दिष्ट करने के लिए कुछ समाधान है? और फिर 'अधिकतम लम्बाई = x+1' सेट करें। यह 'x+1' है क्योंकि दशमलव स्थान की गणना की जाती है। यह तब विनिर्देश के विपरीत लंबाई 'x+1' के पूर्णांक को जमा करने की अनुमति देगा। मुझे एहसास है कि मैं जावास्क्रिप्ट सत्यापन कर सकता हूं लेकिन मैं इसे HTML सत्यापन के साथ करना चाहता हूं।

1
user3834551 1 फरवरी 2020, 21:25

1 उत्तर

सबसे बढ़िया उत्तर

आप पहले एक लुकहेड से कुल लंबाई की जांच कर सकते हैं और फिर संख्याओं की लंबाई की जांच कर सकते हैं दशमलव बिंदु के बाद।

यदि आप X अंकों की कुल संख्या और अधिकतम Y दशमलव अंक चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

^(?=.{X+1}$)([1-9]\d*|0)\.\d{1,Y}$

व्याख्या:

^         asserts you are in the start position of the line
(?=       lookahead (zero length) match for:
    .{X + 1}     X+1 characters
    $            end of line //now you have asserted the total length
the whole part either
    0            is a single zero
    [1-9]\d*     more than a single digit and does not start with zero     
\.        a dot for the decimal point
\d{1,Y}   at least 1 and at most Y digits
$         asserts end of line

ध्यान दें कि आपको पूरे भाग की लंबाई की जांच करने की आवश्यकता नहीं है क्योंकि आप पहले से ही दशमलव के बाद की कुल लंबाई और अंकों की लंबाई की जांच कर रहे हैं, इसलिए दशमलव बिंदु से पहले का हिस्सा स्वचालित रूप से सही है।

उदाहरण:

X = 5 और Y = 2 के लिए, आपके पास होगा:

^(?=.{8}$)([1-9]\d*|0)\.\d{1,2}$

रेगेक्स101 डेमो

1
jrook 2 फरवरी 2020, 00:04