/([a-zA-Z]).*?\1/
如果找到1个匹配的重复字母,则此正则表达式当前在.test()上返回true。我想让它至少匹配至少3或2并返回true。
例如,目前它在.test()
上为类似;
Trickster, Been, Dekko
但我希望它返回true 仅当有超过2个匹配项时,以便以下内容在.test()
上返回true
CordCord, XoXo, XolXol, PiunPiun
NOT 对我之前提到的字符串返回true。
答案 0 :(得分:2)
您可以在{2,}
之后使用limiting quantifier [a-zA-Z]
来匹配两种或更多种模式:
([a-zA-Z]{2,}).*?\1
请参阅regex demo
<强>详情
([a-zA-Z]{2,})
- 捕获与2个或更多ASCII字母匹配的第1组.*?
- 除了换行符之外的任何0 +字符,尽可能少(懒惰)\1
- 与第1组中捕获的相同文本匹配的反向引用。请注意,2个或更多个ASCII字母应该被捕获到1个组中(因此限制量词位于捕获括号内)。
var ss = ['Trickster, Been, Dekko', 'CordCord, XoXo, XolXol, PiunPiun'];
var re = /([a-zA-Z]{2,}).*?\1/;
for (var s of ss) {
console.log(s,"=>",re.test(s));
}
答案 1 :(得分:1)
您可以指定至少三个:/([a-zA-Z]){3,}.*?\1/
> /([a-zA-Z]){3,}.*?\1/.test('Been')
<- false
> /([a-zA-Z]){3,}.*?\1/.test('CordCord')
<- true