2013-06-13 6 views
25

का उपयोग कर अक्षरों, संख्याओं, रिक्त स्थान और विशिष्ट प्रतीकों की अनुमति देता है, मैं इनपुट ग्रंथों को सत्यापित करने के लिए preg_match का उपयोग करता हूं।php केवल मेरे php पर pregmatch

if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) { 
} 

लेकिन यह केवल अल्फान्यूमेरिक की अनुमति देता है और रिक्त स्थान की अनुमति नहीं देता है। मैं रिक्त स्थान, अल्फा और न्यूमेरिक की अनुमति देना चाहता हूं। और अवधि (।) और डैश (-)

कृपया मेरी मदद करें यहां? अग्रिम में धन्यवाद।

+0

बस अपने regex में सभी कि जोड़ने की कोशिश का उपयोग अंक के सीमित करना चाहते हैं,

(यह भी जैसे रोमन अंकों का मतलब है)। – Rikesh

उत्तर

30

उपयोग

preg_match('/^[a-z0-9 .\-]+$/i', $firstname) 
+1

धन्यवाद, मेरा मानना ​​है कि मुझे यह चाहिए कि मुझे – CudoX

+0

का स्वागत है आपका स्वागत है .... – Baba

+0

एक नियम के रूप में, मैं रेगेक्स में बस एक सफेद जगह से बचने के लिए प्रवृत्त होता हूं (क्योंकि यह वास्तव में एन्कोडिंग के आधार पर कई अलग-अलग वर्णों का प्रतिनिधित्व कर सकता है आपका संपादक) और '\ 040' का उपयोग कर स्पष्ट हो। – HorusKol

2

यहाँ केवल मुश्किल सा पानी का छींटा है।

रिक्त स्थान और डॉट्स के लिए, आप बस उन्हें अपने चरित्र वर्ग के लिए, जोड़ सकते हैं ताकि तरह:

'/^[a-zA-Z0-9 .]+$/' 

आसान।

डैश थोड़ा कठिन है क्योंकि इस तरह के चरित्र वर्ग में हाइफ़न का विशेष अर्थ होता है (जैसा कि आप पहले ही जानते हैं, वे a-z जैसे वर्णों की श्रेणियों के लिए उपयोग किए जाते हैं)। एक चरित्र वर्ग में एक हाइफ़न निर्दिष्ट करने के लिए, यह कक्षा में पहला अक्षर होना चाहिए (यानी यह दो वर्णों के बीच नहीं होना चाहिए, अन्यथा इसे वर्ण श्रेणी मार्कर के रूप में माना जाता है)।

तो अपने अभिव्यक्ति होगा:

'/^[-a-zA-Z0-9 .]+$/' 

आशा है कि मदद करता है।

+0

हाँ यह मदद करता है। अब मैं preg_match फ़ंक्शन के लिए सही वाक्यविन्यास को और भी समझ रहा हूं। – CudoX

+3

डैश के लिए पहला अक्षर नहीं होना चाहिए, यदि आप अंतर्राष्ट्रीयकरण करना चाहते हैं, तो आप '\\' –

14

आप केवल ASCII अनुमति देने के लिए नहीं चाहते हैं, तो Unicode properties का उपयोग करें:

preg_match('/^[\p{L}\p{N} .-]+$/', $firstname) 

\p{L}किसी भी भाषा में किसी भी पत्र है, यह भी चीनी, हिब्रू, अरबी, ... से मेल खाता है।

\p{N} संख्यात्मक चरित्र के किसी भी प्रकार यदि आप तो \p{Nd}

+1

का उपयोग करके इसे बच सकते हैं, '0-9' –

+0

@CasimiretHippolyte के बजाय' \ p {N} 'का उपयोग क्यों नहीं कर रहे हैं यह संगत होगा, – stema

+2

मेरा मानना ​​है कि यदि आप PHP में ठीक से काम करना चाहते हैं तो आपको 'यू' संशोधक जोड़ना चाहिए। इस तरह: preg_match ('/^[\ p {एल} \ पी {एन} .-] + $/u', $ firstname) – Larpon