2013-08-23 4 views
8

की अनुमति नहीं दे मैं निम्नलिखित regex जो कुछ विशेष वर्णों की अनुमति नहीं है:Regex कुछ विशेष वर्ण

if (testString.match(/[`~,.<>;':"\/\[\]\|{}()-=_+]/)){  
    alert("password not valid"); 
} 
else 
{ 
    alert("password valid"); 
} 

यह काम कर रहा है। यह regex पासवर्ड स्वीकार करेगा यदि इसमें ब्रैकेट (~,.<>;':"\/\[\]\|{}()-=_+) के अंदर कोई विशेष वर्ण नहीं है।

मेरी समस्या यह है कि यह मुझे अजीब संख्याओं को इनपुट करने की अनुमति नहीं देता है।

मुझे कुछ भी याद आया? अग्रिम में धन्यवाद!

jsFiddle

+4

जबकि आप अपने regex को ठीक करने के लिए @ m.buettner के उत्तर का उपयोग कर सकते हैं, आप अभी भी इसे गलत कर रहे हैं: इसके बजाय * वैध * वर्ण निर्दिष्ट करते हुए एक टाइमलिस्ट अप्राच का उपयोग करें! –

+0

@DarenThomas पूरी तरह से सहमत हैं –

+0

मेरे पास केवल वैध वर्णों की जांच करने के लिए स्थिति है, लेकिन मैंने इसे सर्वर की तरफ इस्तेमाल किया। मैं अभी क्या कर रहा हूं एक क्लाइंट साइड फ़ंक्शन बना रहा है जो जांच करेगा कि अनुमति देने वाले कुछ वर्ण मौजूद हैं या नहीं, कमजोर करने के लिए पासवर्ड संकेतक सिग्नल बदलें। – Gerald

उत्तर

10

आप में एक चरित्र रेंज मिल गया है: जो ) और = (नंबर सहित) के बीच सभी ASCII वर्ण शामिल )-=

यहां एक नमूना है। इसके अलावा

/[`~,.<>;':"\/\[\]\|{}()=_+-]/ 

, आप उन पात्रों के सभी से बचने के लिए की जरूरत नहीं है: वर्ग के अंत तक - ले जाएँ या भागने यह है कि आपके मामले में, यह शायद है

/[`~,.<>;':"/[\]|{}()=_+-]/ 

नोट आप के लिए पर्याप्त, test बजाय match उपयोग करने के लिए:

if (/[`~,.<>;':"/[\]|{}()=_+-]/.test(testString))){ 
    ... 

test एक बूलियन (जो सभी की जरूरत है) देता है, जबकि match सभी कैप्चरिंग समूहों के साथ एक सरणी देता है (जिसे आप वैसे भी छोड़ रहे हैं)।

ध्यान दें कि, जैसा कि डैरेन थॉमस एक टिप्पणी में बताते हैं, आपको यह तय करना चाहिए कि आप कौन से पात्र की अनुमति देते हैं। चूंकि वर्तमान दृष्टिकोण _ जैसे कुछ मानक मानकों के बारे में शिकायत करते समय अजीब यूनिकोड वर्णों के सभी प्रकारों का ख्याल नहीं रखता है। एक श्वेत सूची बनाने के लिए, आप बस दोनों चरित्र वर्ग और हालत को उलटने के कर सकते हैं:

if (!/[^a-zA-Z0-9]/.test(testString)) { 
    ... 

और सभी पात्रों आप अनुमति देना चाहते हैं शामिल हैं।

+0

इसके लिए धन्यवाद! 'टेस्ट' चीज के लिए भी। – Gerald

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