2012-12-12 19 views
31

में विशेष वर्ण मौजूद हैं या नहीं, मुझे पता है कि इस प्रश्न को अक्सर स्टैक पर अक्सर पूछा जाता है, लेकिन मुझे पहले से पोस्ट किए गए प्रश्नों का सीधा जवाब नहीं मिल रहा है।jQuery: जांचें कि स्ट्रिंग

मुझे यह जांचने की ज़रूरत है कि सभी विशेष वर्ण (सिवाय -) एक स्ट्रिंग में हैं, यदि ऐसा है, तो उपयोगकर्ता को एक चेतावनी दें।

if($('#Search').val().indexOf('@') == -1 || $('#Search').val().indexOf('#') == -1 || $('#Search').val().indexOf('$') == -1 || $('#Search').val().indexOf('%') == -1 || $('#Search').val().indexOf('^') == -1 || $('#Search').val().indexOf('&') == -1 || $('#Search').val().indexOf('*') == -1 || $('#Search').val().indexOf('(') == -1 || $('#Search').val().indexOf(')') == -1 || $('#Search').val().indexOf('_') == -1 || $('#Search').val().indexOf('\'') == -1 || $('#Search').val().indexOf('\"') == -1 || $('#Search').val().indexOf('\\') == -1 || $('#Search').val().indexOf('|') == -1 || $('#Search').val().indexOf('?') == -1 || $('#Search').val().indexOf('/') == -1 || $('#Search').val().indexOf(':') == -1 || $('#Search').val().indexOf(';') == -1 || $('#Search').val().indexOf('!') == -1 || $('#Search').val().indexOf('~') == -1 || $('#Search').val().indexOf('`') == -1 || $('#Search').val().indexOf(',') == -1 || $('#Search').val().indexOf('.') == -1 || $('#Search').val().indexOf('<') == -1 || $('#Search').val().indexOf('>') == -1 || $('#Search').val().indexOf('{') == -1 || $('#Search').val().indexOf('}') == -1 || $('#Search').val().indexOf('[') == -1 || $('#Search').val().indexOf(']') == -1 || $('#Search').val().indexOf('+') == -1 || $('#Search').val().indexOf('=') == -1) 
{ 
    // Code that needs to execute when none of the above is in the string 
} 
else 
{ 
    alert('Your search string contains illegal characters.'); 
} 

लेकिन यह काम करने के लिए प्रतीत नहीं होता है ... किसी को भी मुझे इस मामले पर मदद कर सकते हैं:

यह क्या मैं अब तक किया है?

अग्रिम धन्यवाद!

गुइडो

+2

आपको एक बज़िलियन अलग-अलग स्थितियों की बजाय नियमित अभिव्यक्ति का उपयोग करने की आवश्यकता है। और आप ** निश्चित रूप से ** कहना है कि यह वास्तव में "काम नहीं कर रहा है"। – Jon

+0

यह आपकी मदद कर सकता है http://stackoverflow.com/questions/10505772/checking-for-any-occurrence-of-special-characters-with-jquery – Hkachhia

उत्तर

82

आप वास्तव में उन सभी विशेष वर्णों के लिए जाँच करना चाहते हैं, तो यह रेगुलर एक्सप्रेशन का उपयोग करने के लिए आसान है:

var str = $('#Search').val(); 
if(/^[a-zA-Z0-9- ]*$/.test(str) == false) { 
    alert('Your search string contains illegal characters.'); 
} 

ऊपर केवल अनुमति देगा पर्वतमाला a-z, A-Z, 0-9 पर पात्रों की पूरी तरह से मिलकर तार, प्लस हाइफ़न एक स्पेस कैरेक्टर। किसी भी अन्य वर्ण वाली एक स्ट्रिंग alert का कारण बन जाएगी।

+0

यह पूरी तरह से काम करता है। बहुत छोटा और तेज़, धन्यवाद! –

+0

एक संक्षिप्त स्पष्टीकरण जोड़ा गया। नकारात्मकता यह है कि यह अंतरराष्ट्रीय पात्रों को 'é' और' ñ' जैसी अनुमति नहीं देगा, लेकिन अगर आपको उन्हें अनुमति देने की आवश्यकता नहीं है तो मुझे विश्वास है कि यह जाने का तरीका है। – bfavaretto

+0

यह अंतरराष्ट्रीय पात्रों के साथ भी काम करता है;) फिर से धन्यवाद! –

2

आप जाँच कर रहे हैं कि क्या स्ट्रिंग सभी अवैध वर्ण हैं। || से && एस बदलें।

20
var specialChars = "<>@!#$%^&*()_+[]{}?:;|'\"\\,./~`-=" 
var check = function(string){ 
    for(i = 0; i < specialChars.length;i++){ 
     if(string.indexOf(specialChars[i]) > -1){ 
      return true 
     } 
    } 
    return false; 
} 

if(check($('#Search').val()) == false){ 
    // Code that needs to execute when none of the above is in the string 
}else{ 
    alert('Your search string contains illegal characters.'); 
} 
4

तुम भी श्वेत सूची विधि इस्तेमाल कर सकते हैं - (\ रों)

var str = $('#Search').val(); 
var regex = /[^\w\s]/gi; 

if(regex.test(str) == true) { 
    alert('Your search string contains illegal characters.'); 
} 

इस उदाहरण में regex अंक, शब्द वर्ण, अंडरस्कोर (\ डब्ल्यू) और रिक्त स्थान को है। कैरेट (^) इंगित करता है कि हम उन सभी चीजों को देखना चाहते हैं जो हमारे रेगेक्स में नहीं हैं, इसलिए उन चीज़ों की तलाश करें जो शब्द वर्ण, अंडरस्कोर, अंक और व्हाइटस्पेस नहीं हैं।

+4

यह अंतरराष्ट्रीय पात्रों (चीनी, अरबी आदि) के लिए विफल रहता है। मैं इसका उपयोग नहीं करता। –

+0

'== सच'? नहीं होगा अगर (regex.test (str)) {[...]} पर्याप्त है? – scniro

+0

बेशक यह @ एससीएनरो होगा। मैंने सिर्फ स्पष्टता के लिए संपूर्ण समीकरण रखा है। –

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