2010-09-29 20 views
6

में अंतर्राष्ट्रीयकृत नियमित अभिव्यक्ति पोस्टग्रेज़ में 'जोसे' जैसे नामों से मेल खाने के लिए नियमित अभिव्यक्ति कैसे लिख सकती है .. दूसरे शब्दों में मुझे यह जांचने के लिए बाध्यता की आवश्यकता है कि केवल वैध नाम दर्ज किए गए हैं, लेकिन यूनिकोड वर्णों को भी अनुमति देना चाहते हैं।पोस्टग्रेस्क्ल

Regular expressions, unicode style इस पर कुछ संदर्भ है। लेकिन, ऐसा लगता है कि मैं इसे पोस्टग्रेज़ में नहीं लिख सकता।

यदि यह संभव इस के लिए एक regex लिखने के लिए नहीं है, यह जावास्क्रिप्ट

उत्तर

3

का उपयोग कर PostgreSQL यूनिकोड वर्ण डेटाबेस के आधार पर नेट की तरह चरित्र वर्गों का समर्थन नहीं करता क्लाइंट की तरफ केवल जांच करने के लिए पर्याप्त होगा। आपको अधिक मानक [[:alpha:]] वर्ण वर्ग मिलता है, लेकिन यह लोकेल-निर्भर है और शायद इसे कवर नहीं करेगा।

आप एएससीआईआई अक्षरों को सिर्फ ब्लैकलिस्ट करने में सक्षम हो सकते हैं जो आप नहीं चाहते हैं, और सभी गैर-ASCII वर्णों को अनुमति देते हैं।

[^\s!"#$%&'()*+,\-./:;<=>?\[\\\]^_`~]+ 

तरह जैसे कुछ (या तो JavaScript गैर- ASCII कैरेक्टर क्लासेस नहीं है या यहां तक ​​कि [[:alpha:]]।।)

उदाहरण के लिए, एक पाठ चर के रूप में v_text दिया sanitzed जा करने के लिए:

-- Allow internationalized text characters and remove undesired characters 
v_text = regexp_replace(lower(trim(v_text)), '[!"#$%&()*+,./:;<=>?\[\\\]\^_\|~]+', '', 'g'); 
+2

वह नियमित अभिव्यक्ति '' 'चरित्र को अस्वीकार कर देगी, जो कि नामों में एक सुंदर आम है। –

+0

यह पीजी 9.3 के रूप में सच है, लेकिन यदि आप इसे पढ़ रहे हैं और एक नए संस्करण का उपयोग कर रहे हैं, तो मैन्युअल जांचें। यह भविष्य में बदल सकता है। –

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