मैं उपयोगकर्ता डेटा को मान्य करना चाहता हूं, मेरे पास एक फ़ील्ड बजट है और मैं चाहता हूं कि यह प्रारूप ddd.ddd,ddd दिया जाए exp: 235.123,125

मैं इस प्रारूप को रेगेक्स के साथ कैसे निर्दिष्ट कर सकता हूं, मैं सिम्फनी और सिद्धांत का उपयोग कर रहा हूं जो मैंने कोशिश की है और कुछ भी नहीं हुआ जब मैंने एक अलग प्रारूप दिया है

/**
 * @var float
 *
 * @ORM\Column(name="budget", type="float",nullable=true)
 *
 *
 * @Assert\Regex(
 *     pattern="/^\d\d\d[.]\d\d\d[,]\d\d\d+$/",
 *     match=false,
 *     message="Budget Invalid"
 * )
 */
private $budget;
1
Julie 26 जुलाई 2017, 14:59
आप इसे आजमा सकते हैं: (\d{3}.\d{3},\d{3}) । सादर
 – 
Albeis
26 जुलाई 2017, 15:09
यह काम नहीं करेगा @Albeis, आप इस अवधि से नहीं बच पाए
 – 
Jason Roman
26 जुलाई 2017, 16:48
कौन सी अवधि? सादर @JasonRoman
 – 
Albeis
26 जुलाई 2017, 16:55
आपके रेगेक्स में केवल एक ही
 – 
Jason Roman
26 जुलाई 2017, 17:24

1 उत्तर

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

निम्नलिखित फिक्स का प्रयोग करें:

* @Assert\Regex(
*     pattern="/^\d{3}\.\d{3},\d{3}$/",
*     match=true,
*     message="Budget Invalid"

आपका पैटर्न आपके द्वारा निर्दिष्ट प्रारूप से मिलान होना चाहिए, इस प्रकार, match को सत्य पर सेट किया जाना चाहिए, या सत्य के डिफ़ॉल्ट मान के रूप में हटा दिया जाना चाहिए।

यदि true (या सेट नहीं) दिए गए स्ट्रिंग से मेल खाने वाला यह सत्यापनकर्ता पास हो जाएगा पैटर्न रेगुलर एक्सप्रेशन। हालांकि, जब यह विकल्प false पर सेट होता है, तो इसके विपरीत होगा: सत्यापन तभी पास होगा जब दी गई स्ट्रिंग पैटर्न रेगुलर एक्सप्रेशन।

पैटर्न को थोड़ा छोटा किया जा सकता है ^\d{3}\.\d{3},\d{3}$: स्ट्रिंग की शुरुआत, 3 अंक, ., 3 अंक, , और फिर स्ट्रिंग के अंत में 3 अंक।

यदि अंतिम संख्या में 3 से अधिक अंक हो सकते हैं, तो \d{3} के बजाय \d{3,} का उपयोग करें।

1
Wiktor Stribiżew 26 जुलाई 2017, 15:10
मैंने इसे काम करने की कोशिश की है लेकिन अब मेरी समस्या यह है: मेरे पास 2 टैब से बना एक फॉर्म है, बजट दूसरे टैब पर है और सत्यापन पहले टैब के सत्यापन के बाद एक त्रुटि आग लगती है, इसलिए मुझे लगता है कि मुझे मान्य करने के बजाय जावास्क्रिप्ट चाहिए टिप्पणी
 – 
Julie
26 जुलाई 2017, 15:36
यह एक अलग मुद्दा लगता है, है ना? वैसे भी, JS में, आपको केवल /^\d{3}\.\d{3},\d{3}$/.test(your_string) के साथ मान का परीक्षण करने की आवश्यकता है।
 – 
Wiktor Stribiżew
26 जुलाई 2017, 15:37