如何使用正则表达式在JAVA中验证多个条件?

如何使用正则表达式在JAVA中验证多个条件?,java,regex,string,unit-testing,Java,Regex,String,Unit Testing,我有一个字符串作为输入,它需要传递以下多个条件 它是一个长度为8的字符串,包含所有数字。要求是 如果以下4个条件中的任何一个为真,则方法应返回false First two characters - 13, 24, 28 characters three and four - 55, 99 characters five and six - 20, 21 last two characters - 42, 38, 09, 17, 66 我如何使用regex验证这一点,而不是将其拆分为

我有一个字符串作为输入,它需要传递以下多个条件

它是一个长度为8的字符串,包含所有数字。要求是 如果以下4个条件中的任何一个为真,则方法应返回false

First two characters -  13, 24, 28

characters three and four - 55, 99

characters five and six - 20, 21 

last two characters - 42, 38, 09, 17, 66
我如何使用regex验证这一点,而不是将其拆分为4个字符串并进行检查


提前感谢。

一种方法是使用匹配组,因此
(a | b)
将在
a
b
上匹配

所以你的正则表达式应该是

^((13|24|28).{6}|.{2}(55|99).{4}|.{4}(20|21).{2}|.{6}(42|38|09|17|66))$
您可以在java中使用
模式
匹配器

if(value.length()!=8){
返回false;
}否则{
String patternString=“^((13 | 24 | 28)。{6}{2}(55 | 99.){4}{4}(20 | 21)。{2}{6}(42 | 38 | 09 | 17 | 66))”;
Pattern=Pattern.compile(patternString);
Matcher Matcher=pattern.Matcher(值);
布尔匹配=matcher.matches();
回来!火柴;
}
关于字符串的长度,我看不到在正则表达式中检查它的好方法。所以只要用if-else语句检查一下就可以了

但是,如果需要多次,请确保只复制一次图案


另外,对于创建正则表达式,我建议使用类似或的网站。

根据您的问题,字符串是否由数字组成,它不清楚。如果字符串由所有数字组成,请尝试以下操作::
(^(13 | 24 | 28)\\d{6}$)|(^\\d{2}(55 | 99)\\d{4}$)|(^\\d{4}(20 | 21)\\d{2}$)|(^\\d{6}(42 | 38 | 09 | 17 | 66)$)

解释:

  • ^(13 | 24 | 28)\d{6}$--匹配前两位数字&\d{6}表示下一个6 字符是任意数字

  • (^\d{2}(55 | 99)\d{4}$)--\d{2}表示任何数字的前两位&&匹配项 带条件的第3位和第4位..\d{4}表示最后4个字符为任意 数字


此处检查匹配或不匹配…

不符合问题的要求。再次阅读问题:“它是8个字母的字符串,如果以下4个条件中的任何一个为真,则该方法应返回false”。@Andreas yeah对此表示抱歉。更正了。请停止撒拉卡森!:P@Ackdari模式中的{6}{2}{4}.{4}.{6})是什么?@Thinker我将给出一个例子
a{6}
将匹配六个
a
s和
匹配任何字符执行换行符,因此
{6}
将匹配一行上的六个字符不符合问题的要求,问题并不是说字符串都是数字。@Andreas他说的是8个字母的字符串。。。他每对都匹配两位数。它的共同点是所有数字。如果不是,则
\\d
将被替换为
如果您想将“8字母字符串”解释为“8位字符串”,您可以,但您必须在回答中这样说,因为这是您正在做的假设。@Golam我的情况适用于所有数字。谢谢。@Thinker那么这个答案对你合适吗?是否清除字符串中的所有数字
String text = "12345678";
        if (text.matches("(^(13|24|28)\\d{6}$)|(^\\d{2}(55|99)\\d{4}$)|(^\\d{4}(20|21)\\d{2}$)|(^\\d{6}(42|38|09|17|66)$)")) {
            System.out.println("Inalid");
        } else if(text.matches("^\\d{8}$")){
            System.out.println("Valid");
        } else {
            System.out.println("Invalid");
        }