2016-12-21 10 views
5

क्या रेगेक्स के विपरीत पाने का कोई आसान तरीका है या क्या मुझे एक नया रेगेक्स बनाने की ज़रूरत है जो मेरे पास है जो विपरीत है?regex में क्या नहीं है हटाने के लिए आसान तरीका

उदाहरण के लिए, मैं यह सुनिश्चित करने के लिए इस रेगेक्स का उपयोग करता हूं कि मुझे उचित मुद्रा मान मिल रहे हैं - बिना $ साइन के।

/^[0-9]+(\.[0-9][0-9]?)?$/ 

अब मैं इस पैटर्न के बाहर आने वाली हर चीज़ को हटाना चाहता हूं। उदाहरण के लिए, यदि उपयोगकर्ता अक्षरों में प्रवेश करता है या दो अवधि दर्ज करने का प्रयास करता है उदा। 7.50.6, मैं अवांछित वर्णों को हटाना चाहता हूं। मैं उसको कैसे करू?

+1

आप रेगेक्स का उपयोग कैसे कर रहे हैं? – Isaac

+0

मैं वर्तमान में i.e. myValue.test (myRegex) का परीक्षण करने के लिए इसका उपयोग करता हूं; लेकिन अब मेरे रिएक्ट ऐप में, मैं उपयोगकर्ता द्वारा अवांछित मानों को पूरी तरह से रोकने से रोकना चाहता हूं। – Sam

+0

शायद 'value = value.match (/ [0-9] + (\। [0-9] {1,2})? /) [0]' कोशिश करें? यह हो सकता है कि आप – Isaac

उत्तर

2

मुझे लगता है कि आप गलत तरीके से इस पर जा रहे हैं। सबसे पहले, इस तरह से इनपुट त्रुटि को छिपाने की कोशिश करना एक बुरा विचार है। यदि किसी उपयोगकर्ता को कोई संख्या टाइप करना है और उन्होंने एक अतिरिक्त बिंदु डाला है, तो आपको क्या बताता है कि कौन सा अच्छा हिस्सा है और कौन सा बुरा है? आप उपयोगकर्ता को बताए जाने से बेहतर हैं कि उनके इनपुट में कुछ गड़बड़ है।

लेकिन आम तौर पर, आप यह निर्दिष्ट करके एक रेगेक्स का उपयोग करते हैं कि इसे कैसा दिखाना है और कैप्चर समूहों का उपयोग करके आप कौन से महत्वपूर्ण भाग रखना चाहते हैं।

यह एक कैप्चर समूह है: ([a-z0-9])@example.com; यह एक गैर-कैप्चर समूह है: (?:hello|hi)

फ़ोन नंबर के मामले में, जो कुछ मायने रखते हैं वह अंक हैं, इसलिए आप उन्हें कैप्चर कर सकते हैं और अक्षरों के बीच कई रूपों को स्वीकार कर सकते हैं। डाक कोड के लिए यहां एक सरल है:

([A-Z][0-9][A-Z]) ?([0-9][A-Z][0-9]) 

तब आपको केवल कब्जे वाले समूहों को जोड़ना है। यदि मौजूद है, तो जगह पर कब्जा नहीं किया जाएगा।

MDN पर और उदाहरण खोजें।

+0

आपके सुझावों के बावजूद, यह अभी भी जवाब नहीं देता है कि संभावित रूप से कैसे विपरीत regex – Isaac

+0

मैं कुछ भी छिपाने की कोशिश नहीं कर रहा हूं। मैं उन्हें हटा रहा हूँ। उदाहरण के लिए, उपयोगकर्ता को फ़ोन नंबर में अक्षरों को टाइप करने की अनुमति देने के लिए क्या बिंदु है और उसे ठीक करने के लिए कह रहा है। क्योंकि प्रतिक्रिया राज्य के प्रबंधन के बारे में है, मैं यह पता लगा सकता हूं कि उपयोगकर्ता ने पत्र दर्ज किए हैं और बस उन्हें मेरे राज्य में नहीं रखा है। ऐसा करके, मैं एक कड़े प्रबंधित इनपुट क्षेत्र हो सकता है। – Sam

+0

दरअसल, यह जवाब नहीं देता कि रीगेक्स को कैसे बदला जाए। मुझे बहुत संदेह है कि यह कोशिश करने लायक है - मैं इसे [एक्सवाई समस्या] (http://xyproblem.info/) के रूप में देखता हूं। –

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