Java 如何检查值之间是否不存在逗号字符?

Java 如何检查值之间是否不存在逗号字符?,java,regex,datetime-format,Java,Regex,Datetime Format,对于给定的字符串,我想检查在任何数字和任何文字字符之间是否存在逗号分隔符,并且仅按此顺序 例如: Mo Do 10:00-20:00 Fr Sa 10:00-21:00 如果,存在于20:00Fr-Sa之间,则应给出true/false。在解析之前,我总是删除空白 String withComma = "Mo-Do 10:00-20:00, Fr-Sa 10:00-21:00".replace(" ", ""); String withoutComma = "Mo-Do 10:00-20:00

对于给定的字符串,我想检查在任何数字和任何文字字符之间是否存在逗号分隔符,并且仅按此顺序

例如:
Mo Do 10:00-20:00 Fr Sa 10:00-21:00

如果
存在于
20:00Fr-Sa
之间,则应给出true/false。在解析之前,我总是删除空白

String withComma = "Mo-Do 10:00-20:00, Fr-Sa 10:00-21:00".replace(" ", "");
String withoutComma = "Mo-Do 10:00-20:00 Fr-Sa 10:00-21:00".replace(" ", "");

Pattern pattern = Pattern.compile(".*\\d,[A-Z].*");

System.out.println(pattern.matcher(withComma).matches()); //true
System.out.println(pattern.matcher(withoutComma).matches()); //false
如果输入字符串包含任意数量的后跟(按此顺序)的字符,则返回
true

  • 数字
    \\d
  • 逗号
  • 大写字母
    [a-Z]
  • 任意数量的字符
    *

  • 您可以使用下面提到的正则表达式来检查所提到的模式是否存在

    String input = "Mo-Do 10:00-20:00 Fr-Sa 10:00-21:00";
    
    String inputWithoutWhiteSpace = input.replaceAll("\\s", "");
    
    String pattern = "(.*)([0-9][0-9]:[0-9][0-9],[A-Z][a-z]-[A-Z][a-z])(.*)";
    
    boolean patternExist = inputWithoutWhiteSpace.matches(pattern);
    

    你试过什么?给我们一个regex@Jocke目前我使用
    “(?”*\\d[A-Za-z]*"为什么不为Mo Do 10:00-20:00创建一个模式,只提取该部分,忽略是否有逗号。请解释为什么有必要知道那里是否有逗号。询问是因为这听起来像一个逗号,我们希望帮助您解决实际问题。当有相同的情况时,此解决方案不正确匹配每天营业时间
    Mo Sa 10:00-20:00
    ,我不得不稍微改变一下,使用regex
    “*\\d[a-Za-z].*”
    ,这是@Ralf Renz发给我的评论。
    [a-Za-z]
    意味着日期名称可以以小写或大写字符开头。我不认为这与每天相同的开放时间有什么关系,因为在这种情况下不可能有任何匹配。我的意思是使用regex,内部不带逗号,而是用逗号。如果()语句。简单来说,如果使用
    “*\\d[A-Z].*”
    “*\\d[A-Za-Z].*”
    ,您的解决方案工作正常。您好,情况有点复杂,因为我还可以为同一天的不同营业时间设置字符串
    “Mo Do 08:00-12:00&13:00-20:00 Fr Sa 10:00-21:00”
    。我只是没有添加所有可能的选项,因为最重要的是检查数字字符串和字母字符之间是否存在逗号分隔符。上述模式在给定场景中正常工作。“Mo Do 08:00-12:00&13:00-20:00 Fr Sa 10:00-21:00”