使用Java中的Regex验证文本和数字格式

时间:2017-05-12 19:33:18

标签: java regex

我想使用Java验证标识格式。

示例:UWU/CST/14/0015UWU/IIT/14/0025

此处需要UWU,其中一个CST或IIT必须存在,否则无效。之后,它可以有任意两位数字,然后在最后一节中至少有四位数字。请帮我解决这个问题。

package validate2;

import java.util.*;
public class Validate2 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    Scanner a=new Scanner(System.in);
    String l=a.next();
    boolean x=l.matches("^uwu\\/\\w\\w\\w\\/\\d\\d\\/\\d\\d\\d\\d");

    if (x == false) {
        //JOptionPane.showMessageDialog(rootPane, "Enter a valid serviceNO");
        System.out.println("NO");
        //return false;
    } else {
        System.out.println("YES");
        //return true;
    }

}

}

3 个答案:

答案 0 :(得分:3)

正则表达式:

m
  • 确保以^UWU\/(CST|IIT)\/\d{2}\/\d{4,}$
  • 开头
  • 确保第二部分为UWUCST
  • 确保第三部分包含正好2位 IIT
  • 确保最后一部分包含 4位或更多位 \d{2}

Regex 101 Demo

希望这有帮助!

答案 1 :(得分:2)

您可以尝试使用此正则表达式(?i)UWU\/(CST|IIT)/\d{2}\/\d{4}

String str = "UWU/CST/14/0015";
String regex = "(?i)UWU\\/(CST|IIT)/\\d{2}\\/\\d{4}";
System.out.println(str.matches(regex));
  1. (?i):将接受任何大写或小写
  2. UWU:从UWU
  3. 开始
  4. (CST|IIT):其次是CST或IIT
  5. \d{2}:接着是2次降级
  6. \d{4}:接着是4次降价

答案 2 :(得分:1)

而不是这个长正则表达式^uwu\\/\\w\\w\\w\\/\\d\\d\\/\\d\\d\\d\\d

这是最简单的一个。

正则表达式: ^UWU\/(?:CST|IIT)\/\d+\/\d+$

说明:以文字UWU开头,然后是/,后跟CSTIIT,后跟/ {{ 1}}然后multiple digits然后/

要限制不使用数字,请使用multiple digits,其中{n,m}为最小值,n为最大值

<强> Regex101 Demo