Pavi
Pavi

Reputation: 345

Detect repeating letter in an string in Javascript

code for detecting repeating letter in a string.

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

I am getting "false" as output for the above string "paraven4sr". But this code works correctly for the strings like "paraaven4sr". i mean if the character repeated consecutively, code gives output as "TRUE". how to rewrite this code so that i ll get output as "TRUE" when the character repeats in a string

Upvotes: 4

Views: 23212

Answers (4)

Jonatas Walker
Jonatas Walker

Reputation: 14150

To just test duplicate alphanumeric character (including underscore _):

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

Upvotes: 1

MT0
MT0

Reputation: 167981

JSFIDDLE

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

The regular expression /([a-zA-Z])\1+$/ is looking for:

  • ([a-zA-Z]]) - A letter which it captures in the first group; then
  • \1+ - immediately following it one or more copies of that letter; then
  • $ - the end of the string.

Changing it to /([a-zA-Z]).*?\1/ instead searches for:

  • ([a-zA-Z]) - A letter which it captures in the first group; then
  • .*? - zero or more characters (the ? denotes as few as possible); until
  • \1 - it finds a repeat of the first matched character.

If you have a requirement that the second match must be at the end-of-the-string then you can add $ to the end of the regular expression but from your text description of what you wanted then this did not seem to be necessary.

Upvotes: 26

Ringo
Ringo

Reputation: 3965

Try this:

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));

Here is jsfiddle

Upvotes: 3

Christian
Christian

Reputation: 7429

Something like this?

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

"aab".count("a") > 1

EDIT: Sorry, just read that you are not searching for a function to find whether a letter is found more than once but to find whether a letter is a duplicate. Anyway, I leave this function here, maybe it can help. Sorry ;)

Upvotes: 0

Related Questions