2011-05-30 78 views
8

使用JavaScript的顺序,我需要检查,如果给定的字符串包含重复字母的顺序是这样的:如何确定是否一个字符串包含重复字母

“AAAAA”

我该怎么做?

+1

你有没有考虑像双L或双C的重复有效的情况下? – Dimitri 2011-05-30 13:09:16

+0

是字母不止一次重复的所有地方 – vetri02 2011-05-30 13:12:13

+2

你想知道所有的地方吗?或者你想知道他们是什么? – Eric 2011-05-30 13:19:30

回答

7

您可以使用此功能:

function hasRepeatedLetters(str) { 
    var patt = /^([a-z])\1+$/; 
    var result = patt.test(str); 
    return result; 
} 
+2

因为[如果我运行它](http://jsfiddle.net/Eric/3M8wx/embedded/result/),它会出错。 – Eric 2011-05-30 13:23:55

+0

如果它只是在字符串中重复的相同字符只是“aaaaaaaaaaaa”而不是“aadaa” – vetri02 2011-05-30 13:38:37

+0

@weblearner,我该怎么办?两者都会返回“true”。你想要它有不同的表现吗? – melhosseiny 2011-05-30 13:42:13

2
function check(str) { 
    var tmp = {}; 
    for(var i = str.length-1; i >= 0; i--) { 
     var c = str.charAt(i); 
     if(c in tmp) { 
      tmp[c] += 1; 
     } 
     else { 
      tmp[c] = 1; 
     } 
    } 
    var result = {}; 
    for(c in tmp) { 
     if(tmp.hasOwnProperty(c)) { 
      if(tmp[c] > 1){ 
       result[c] = tmp[c]; 
      } 
     } 
    } 
    return result; 
} 

然后您可以检查结果以获取重复的字符及其频率。如果结果是空的,则不存在重复。

+1

请注意,某些较旧的浏览器不支持在字符串上使用'[]'表示法;在那些上,使用'c = str.charAt(i)'而不是'c = str [i]'。 – 2011-05-30 13:16:17

+0

@ T.J.Crowder:谢谢 – wong2 2011-05-30 13:17:23

11

使用正则表达式:

var hasDuplicates = (/([a-z])\1/i).test(str) 

或者,如果你不想赶aA和喜欢

var hasDuplicates = (/([a-zA-Z])\1/).test(str) 

或者,如果你决定要澄清你的问题:

var hasDuplicates = (/^([a-zA-Z])\1+$/).test(str) 
3

尝试使用此

checkRepeat = function (str) { 
    var repeats = /(.)\1/; 
    return repeats.test(str) 
} 

使用范例

if(checkRepeat ("aaaaaaaa")) 
alert('Has Repeat!') 
1

这将检查如果字符串两次以上重复:

function checkStr(str) { 
    str = str.replace(/\s+/g,"_"); 
    return /(\S)(\1{2,})/g.test(str); 
} 
0
var char = "abcbdf..,,ddd,,,d,,,"; 
var tempArry={}; 

for (var i=0; i < char.length; i++) { 
    if (tempArry[char[i]]) { 
     tempArry[char[i]].push(char[i]); 
    } else { 
     tempArry[char[i]] = []; 
     tempArry[char[i]].push(char[i]); 
    } 
} 

console.log(tempArry); 

这甚至会返回r的数量也是重复的人物。

0

我解决了使用for循环,不与正则表达式

//This check if a string has 3 repeated letters, if yes return true, instead return false 
 
//If you want more than 3 to check just add another validation in the if check 
 

 
function stringCheck (string) { 
 
    for (var i = 0; i < string.length; i++) 
 
     if (string[i]===string[i+1] && string[i+1]===string[i+2]) 
 
      return true 
 
    
 
    return false \t 
 
} 
 
var str1 = "hello word" //expected false 
 
var str2 = "helllo word" //expredted true 
 
var str3 = "123 blAAbA" //exprected false 
 
var str4 = "hahaha haaa" //exprected true 
 

 
console.log(str1, "<==", stringCheck(str1)) 
 
console.log(str2, "<==", stringCheck(str2)) 
 
console.log(str3, "<==", stringCheck(str3)) 
 
console.log(str4, "<==", stringCheck(str4))

相关问题