2012-03-19 23 views
5

में कम से कम 4 अलग-अलग वर्णों की जांच करें मुझे रेगेक्स की आवश्यकता है जो जांचता है कि String में कम से कम 4 अद्वितीय वर्ण हैं। उदाहरण के लिए, यदि कोई स्ट्रिंग "test" है तो यह विफल हो जाती है क्योंकि इसमें तीन अलग-अलग वर्ण हैं लेकिन यदि कोई स्ट्रिंग "test1" है तो यह गुजरती है।रेगेक्स की आवश्यकता है जो स्ट्रिंग

+0

करो ** नहीं ** इस के लिए एक "रेगुलर एक्सप्रेशन" का प्रयोग करें। एक नियमित अभिव्यक्ति ** इस समस्या को अच्छी तरह से संभाल नहीं सकता ** अच्छी तरह से। (हाँ, यह * संभव * है, fsvo, लेकिन यह एक दुःस्वप्न है और अपेक्षाकृत छोटी ऊपरी बाउंड लंबाई तक सीमित है।) –

+0

असल में, यह नियमित नहीं है। – Matthias

उत्तर

6

मुझे यकीन नहीं है कि रेगेक्स के साथ ऐसा कैसे करें, और न ही मैं समस्या को हल करने का एक अच्छा तरीका होने की उम्मीद करूंगा।

function countUniqueChars(testVal) { 
    var index = {}; 
    var ch, cnt = 0; 
    for (var i = 0; i < testVal.length; i++) { 
     ch = testVal.charAt(i); 
     if (!(ch in index)) { 
      index[ch] = true; 
      ++cnt; 
     } 
    } 
    return(cnt); 
} 

function hasFourUniqueChars(testVal) { 
    return(countUniqueChars(testVal) >= 4); 
} 

आप इसे यहाँ काम देख सकते हैं:: यहाँ नियमित रूप से जावास्क्रिप्ट के साथ एक अधिक सामान्य प्रयोजन समारोह है http://jsfiddle.net/jfriend00/bqBRv/

+0

क्या यह वास्तव में काम कर रहा है? –

+0

@ChuckNorris "दंत चिकित्सक के बाद चक नॉरिस" – mowwwalker

+0

हां, यह काम करता है। देखें [जेएसफ़िल्ड] (http://jsfiddle.net/jfriend00/bqBRv/)। – jfriend00

1

आप अतिरिक्त लाइब्रेरी का उपयोग कर के लिए खुले हैं, तो undescore.js कुछ उपयोगिता कार्यों है कि यह एक बहुत ही कम कर सकते हैं प्रदान करता है और मीठा क्वेरी:

function countUniqueCharacters(value) { 
    return _.uniq(value.split("")).length; 
} 
0
var str = "abcdef" 
var counter = 0; 
hash = new Object(); 
var i; 
for(i=0; i< str.length; i++){ 
    if(!hash[str.charAt(i)]){ 
    counter +=1; hash[str.charAt(i)]=true 
    } 
} 

if(counter < 4){ 
    console.log("error"); 
} 
+0

क्या यह अंतिम चरित्र को अनदेखा नहीं करता है? –

+0

नहीं स्ट्रिंग के अंतिम प्रतीक में स्ट्रिंग है। लम्बाई - 1 स्थिति – gayavat

+1

लेकिन आप केवल स्ट्रिंग। लम्बाई - 2 तक इंटरैक्ट करते हैं, "i

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