在Javascript中检测字符串中的重复字母

Detect repeating letter in an string in Javascript

本文关键字:字符串 Javascript 检测      更新时间:2024-06-25

用于检测字符串中重复字母的代码。

var str="paraven4sr";
var hasDuplicates = (/([a-zA-Z])'1+$/).test(str)        
alert("repeating string "+hasDuplicates);

我得到"false"作为上面字符串"paraven4sr"的输出。但这段代码对于"paraaven4sr"这样的字符串是正确的我的意思是,如果字符连续重复,代码输出为"TRUE"。如何重写此代码,以便在字符串

中重复字符时输出为"TRUE"

JSFIDDLE

var str="paraven4sr";
var hasDuplicates = (/([a-zA-Z]).*?'1/).test(str)        
alert("repeating string "+hasDuplicates);

/([a-zA-Z])'1+$/正在查找的正则表达式:

  • ([a-zA-Z]])——它在第一组中捕获的一个字母;那么
  • '1+——紧随其后的是该信件的一份或多份副本;那么
  • $—字符串的末尾

改为/([a-zA-Z]).*?'1/搜索:

  • ([a-zA-Z])——它在第一组中捕获的一个字母;那么
  • .*?-零个或多个字符(?表示尽可能少的字符);直到
  • '1-它找到第一个匹配字符的重复

如果您要求第二个匹配必须在字符串的末尾,那么您可以将$添加到正则表达式的末尾,但从您想要的文本描述来看,这似乎没有必要。

试试这个:

var str = "paraven4sr";
function checkDuplicate(str){
    for(var i = 0; i < str.length; i++){
        var re = new RegExp("[^"+ str[i] +"]","g");
        if(str.replace(re, "").length >= 2){
            return true;
        }
    }
    return false;
}
alert(checkDuplicate(str));

这是jsfiddle

只测试重复的字母数字字符(包括下划线_):

console.log(/('w)'1+/.test('aab'));

类似的东西?

String.prototype.count=function(s1) { 
   return (this.length - this.replace(new RegExp(s1,"g"), '').length) / s1.length;
}
"aab".count("a") > 1

编辑:很抱歉,请注意,您不是在搜索一个函数来查找一封信是否被多次找到,而是在搜索一封信是不是重复。不管怎样,我把这个功能留在这里,也许它会有所帮助。对不起;)