gpt4 book ai didi

java - 如何使用正则表达式来检查字符串中的重复字符?

转载 作者:行者123 更新时间:2023-11-30 08:18:37 24 4
gpt4 key购买 nike

我正在用 Java 编写一款问答游戏,除了验证用户答案的​​一部分之外,我已经完成了所有操作。所以基本上,我会提示用户问题和可能的答案,然后用户将输入他们的答案。现在,我正在尝试验证他们的答案,然后再检查其是否正确,因此如果错误,我可以提示他们输入不同的答案。规则是他们的答案必须是 0 到 4 个字符的字符串,仅使用数字 1-4,并且不能有重复的字符。所以1234有效,24有效,321有效,589无效,abc无效,111无效,1233无效。到目前为止,除了重复字符之外,我已经涵盖了所有条件。一开始我用的是

if (answer.matches("^[1-4]{0,4}$")) { // valid check if correct

这会处理除重复项之外的所有内容。接下来我尝试了

if (answer.matches("^1?2?3?4?$")) { // valid check if correct

如果用户按升序输入数字,即 123、234、24、12、2344 等,这会处理重复项。唯一的问题是,如果用户输入类似 432 的内容,它将被视为无效即使它应该被认为是有效的。我明白为什么这与我的正则表达式不匹配,但我能想到的唯一其他解决方案是列出所有可能的解决方案,但显然我不会在 if 语句中放入 24 个条件。我可以用正则表达式做些什么来解决这个问题吗?我知道我可以用蛮力的方式做到这一点,但我更愿意有一个有效的正则表达式来解决这个问题。谢谢。

最佳答案

您可以使用这个基于前瞻的正则表达式:

\b(?:([1-4])(?![1-4]*\1)){1,4}\b

RegEx Demo

关于java - 如何使用正则表达式来检查字符串中的重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29309292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com