使用Java正则表达式验证字符串

使用Java正则表达式验证字符串,java,regex,Java,Regex,在输入字符串中,值n或t或y可以存在,但不能超过一次 同样的规则适用于*+-。如果存在,将发生一次。如何使用RegEx实现 它是一个日期字段,使用各种快捷键生成日期,如n=now+1=第二天-1=前一天,y=当前第1天;t=现在;t+1=当前日期+1:00小时;t+2=当前日期+2:00小时。我需要验证输入 private static final String DATE_SHORTCUT_CHARS_ALLOWED = "nt*y+-"; public static void main(St

在输入字符串中,值nty可以存在,但不能超过一次

同样的规则适用于
*+-
。如果存在,将发生一次。如何使用RegEx实现

它是一个日期字段,使用各种快捷键生成日期,如n=now+1=第二天-1=前一天,y=当前第1天;t=现在;t+1=当前日期+1:00小时;t+2=当前日期+2:00小时。我需要验证输入

private static final String DATE_SHORTCUT_CHARS_ALLOWED = "nt*y+-";

public static void main(String []args){
    String value = "tnt-+";//not ok
    //String value = "t+";//ok
    //String value = "t+-";// not ok
    //String value = "nty+";//not ok
    //String value = "n+n+";//not ok
    //String value = "n++";//not ok
    //String value = "n+";//ok

   if((value.matches(".*([a-zA-Z])\\1{1,}.*")) || (value.matches(".*(\\W)\\1{1,}.*"))){
       System.out.println("not ok"); 
   }else{
        System.out.println("ok");
   }
 }

在我看来,你只是需要。或者您可以输入像
ABCD。。。。n+
应该匹配哪些?@WiktorStribiżew,但对字符串value=“n”不起作用;好的,那(这也会匹配一个空字符串)呢?你也可以试试这个
^([nty][*+-].[nty][*+-].[*+-].[nty].[nty].[*+-])$
@Wiktor这个不会匹配任何空字符串。@ShafinMahmud:我没提过吗?问题还不清楚。可以存在并不意味着必须存在。这就是为什么我建议这样或那样,使OP post成为真正的、全面的需求。没有他们,这个问题就不可能有正确的答案。