2011-09-13 15 views
7

मैं http://regexlib.com/ पर एक नियमित अभिव्यक्ति का उपयोग करके एक फॉर्म को सत्यापित करने का प्रयास कर रहा हूं। मैं जो करने की कोशिश कर रहा हूं वह ए-जेड, कॉमा और एस्ट्रोफ़ेस को छोड़कर सभी पात्रों को फ़िल्टर करता है। अगर मैं इस कोड का उपयोग करता हूं:रेगेक्स में apostrophes से बच?

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z'-]+)$" /> 

मुझे निम्न त्रुटि मिलती है: अभिव्यक्ति में बेजोड़ []। मैं पता लगा इस apostrophe से संबंधित है, क्योंकि यह काम करता है अगर मैं इस कोड का उपयोग (लेकिन अक्षर लोप की अनुमति नहीं है):

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z-]+)$" /> 

तो मैं सोच रहा हूँ वहाँ जब नियमित अभिव्यक्ति का उपयोग करते हुए अक्षर लोप से बचने के लिए कुछ विशेष तरीका है?

संपादित

मुझे लगता है कि जहां समस्या (xanatos करने के लिए धन्यवाद) की वजह से किया जा रहा है मैंने पाया, यकीन है कि यह कैसे तय करने के लिए नहीं। मूल रूप से CF इस प्रकार क्षेत्र मान्य करने के लिए एक छिपी हुई फ़ील्ड पैदा कर रहा है:

<input type='hidden' name='FirstName_CFFORMREGEX' value='^([a-zA-Z'-]+)$'> 

क्योंकि यह मूल्य दौर भाषण के निशान के बजाय एकल अक्षर लोप उपयोग कर रहा है, यह मूल्य के अंत के रूप में apostrophe की व्याख्या कर रहा है।

+0

apostrophe विशेष वर्ण है और साथ लगाकर द्वारा मानक पाठ से भाग जाने की आवश्यकता है (यह एकल उद्धरण के लिए कोड है) ' \ ', पैटर्न = "^ ([ए-जेए-जेड \' -] +) $" एचटीएच – John

+1

@ जॉन क्या आप निश्चित हैं? और इसका क्या अर्थ है? रेगेक्स "भाषा" में इसका उपयोग कैसे किया जाता है? – xanatos

+0

मैं कहता हूं 'कोशिश करें' तो मुझे यकीन नहीं है, रेगेक्स में कई स्वाद हैं, और टैग किए गए अभिव्यक्तियों को प्रतिस्थापित करना वास्तव में मेरे वर्ड 2002 प्रोग्राम से अनुपस्थित है। – John

उत्तर

7

मुझे लगता है कि cfinput कार्यान्वयन में एक बग है। यह शायद जावास्क्रिप्ट रेगेक्स में पैटर्न में आपके द्वारा पारित स्ट्रिंग का उपयोग करता है लेकिन यह उद्धरण के लिए ' का उपयोग करता है। तो यह में बदल देता:

new Regex('^([a-zA-Z'-]+)$') 

\x27 साथ बोली के बजाय ऐसे

+0

उस xanato के लिए धन्यवाद, दुर्भाग्यवश यह भी काम नहीं करता है। जावास्क्रिप्ट सत्यापन वास्तव में मेरे मूल के साथ ठीक काम करता है लेकिन यह सर्वर पक्ष सत्यापन है जहां समस्या है। अगर मुझे इसके साथ कोई और जानकारी नहीं मिलती है, तो मैं सर्वर सर्वर पर इसे प्रमाणित करने के लिए कुछ लिखने का प्रयास कर सकता हूं। – Kristian82

+0

@ Kristian82 इसे आजमाएं :-) – xanatos

+1

मेरी टिप्पणी अब कोई समझ नहीं आता है, बहुत बहुत धन्यवाद ... – Kristian82

0

बेजोड़] ऐसा इसलिए है क्योंकि हाइफ़न का मतलब इसके आसपास के दो पात्रों के बीच एक सीमा के रूप में किया जाता है। शुरुआत में हाइफ़न को सर्वोत्तम अभ्यास के रूप में रखें।

^([-a-zA-Z']+)$ 
+2

इसे अंत तक रखना एक ही अच्छा अभ्यास है, यहां कोई अंतर नहीं है। – stema

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