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

Pav*_*avi 3 javascript regex

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

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

我得到" 假"作为上述字符串" paraven4sr "的输出.但是这段代码可以正常地用于像" paraaven4sr"这样的字符串.我的意思是如果角色连续重复,代码将输出设为" TRUE".如何重写此代码,以便当字符在字符串中重复时输出为" TRUE"

MT0*_*MT0 24

的jsfiddle

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

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

  • ([a-zA-Z]]) - 它在第一组中捕获的一封信; 然后
  • \1+ - 紧接着该信件的一份或多份副本; 然后
  • $ - 字符串的结尾.

将其更改为/([a-zA-Z]).*?\1/搜索:

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

如果您要求第二个匹配必须位于字符串结尾处,那么您可以添加$到正则表达式的末尾,但是根据您想要的文本描述,这似乎没有必要.