仅由重复字符组成的字符串的正则表达式

4
我需要创建一个验证器,以确定一个字符串是否只由重复的字符组成。例如,它可以捕捉到"pp",但不能捕捉到"happy"。
目前,我可以使用以下方法检查重复字符:
/(.)\1+/.test(value);

我应该如何修改这个正则表达式只匹配"pp"而不匹配"happy"? 正则表达式是最好的方法吗?


https://dev59.com/4Ijca4cB1Zd3GeqP3end#29159039 - bobble bubble
2个回答

6
你的正则表达式基本正确,你只需在开头和结尾分别加上^$,以确保该字符串不包含任何其他字符。
/^(.)\1+$/.test(value);

另请参见Regex101演示


1
一个反向操作也应该有效。也就是说,这个正则表达式应该匹配包含两个非重复字符或空字符串的字符串。在正则表达式之前存在否定符号 ! 应该执行反向匹配。
> !/(.)(?!\1).|^$/.test('happy')
false
> !/(.)(?!\1).|^$/.test('')
false
> !/(.)(?!\1).|^$/.test('pp')
true
> !/(.)(?!\1).|^$/.test('ppo')
false
> !/(.)(?!\1).|^$/.test('ppppppppp')
true
> 

DEMO

可以翻译为:

{{链接1:演示}}


你基本上是在说,如果没有任何后续字符与第一个字符不同,则返回true。这种方法比仅返回所有后续字符相同的正则表达式更好在哪些方面? - user663031

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接