gpt4 book ai didi

java - 使用 Java 中的正则表达式确定输入字符串是否与时钟时间匹配

转载 作者:行者123 更新时间:2023-11-30 08:38:51 26 4
gpt4 key购买 nike

我正在尝试确定输入字符串是否采用有效的 24 小时日期格式(即 hh:mm:ss)。我使用了几种不同的逻辑,并且在我的测试用例中大部分都取得了成功。对于我尝试过的所有输入(包括下面的输入),我的代码目前都失败了。

表达式应该按以下方式工作:

  • 输入 11:24:10 应该输出 Valid form
  • 输入 00:13:42 应该输出 Valid form
  • 输入 24:52:25 应该输出 Invalid form
  • 输入 05:62:55 应该输出 Invalid form

这是我的代码:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
System.out.print("String to check: ");
String input = new Scanner(System.in).nextLine();

if (input.matches("((0|1)[0-9])|(2[0-3]):[0-5][0-9]:[0-5][0-9]")) {
System.out.println("Valid form");
} else {
System.out.println("Invalid form");
}
}
}

我最近才开始学习 Java,如果之前有人问过这个问题(我用谷歌搜索过!),我深表歉意。感谢您的帮助!

最佳答案

应该是

(((0|1)[0-9])|(2[0-3])):[0-5][0-9]:[0-5][0-9]

根据你的正则表达式

((0|1)[0-9])|(2[0-3]):[0-5][0-9]:[0-5][0-9]

它将匹配 ((0|1)[0-9])(2[0-3]):[0-5][0-9]:[ 0-5][0-9]

你也可以使用non capturing组如果你只是想匹配它

(?:(?:(?:0|1)[0-9])|(?:2[0-3])):[0-5][0-9]:[0-5][0-9]

您的正则表达式可以通过修改小时部分进一步简化

[01][0-9]

IDEONE DEMO

编辑

一点点修改

(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]

REGEX DEMO

关于java - 使用 Java 中的正则表达式确定输入字符串是否与时钟时间匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36376649/

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