字符串中的Java正则表达式字符

时间:2016-07-22 05:23:51

标签: java regex string exception character

我正在处理一个项目,现在用户输入的RFID必须是一个长度为9个字符且以十六进制表示的字符串,因此每个字符都是0到9之间的数字或字母A到F之一(不区分大小写)

然后我还需要输入一个固定在6个字符的架子位置,第一个字符是' s'指定它是货架位置,后面跟着一个5位数字。 EX:" s04013" (不区分大小写)

我使用扫描仪将输入存储在变量RFID和originalLocation中。我有两个问题:

1)如何检查并确保输入有效,以便我可以抛出异常?我想我必须使用正则表达式,但我不确定。

2)有没有办法将字符串的长度修改为指定数量的字符?

非常感谢任何帮助/建议 非常感谢你!

2 个答案:

答案 0 :(得分:0)

<强>(S [0-9] {5} | [0-9A-F] {9})

这个正则表达式可以解决您的问题。

See DEMO here

String str = "s04013"; 
String regex = "(s[0-9]{5}|[0-9a-f]{9})";
if(str.matches(regex)) {
  /*Do something*/
} else {
   throw new Exception("Token does not matach");
}

答案 1 :(得分:0)

我不知道我是否理解你的问题,但这就是我从你的问题中得到的东西。 代码:

import java.util.Scanner;

public class RegexTry {
    public static void main(String args[]){

    Scanner scanner = new Scanner(System.in);
    String RFIDreg = "^[0-9A-Fa-f]{9}$";
    String Shelfreg = "^s[0-9]{5}$";

    System.out.print("Enter RFID: ");
    String RFIDString = scanner.nextLine();//input RFID string

    /*Check for RFID string*/
    if(RFIDString.matches(RFIDreg)){
        System.out.println("Correct");
    }
    else{
        System.out.println("False");
    }
    /*Check for RFID string*/

System.out.print("Enter Shelf Position: ");
String Shelfstring = scanner.nextLine();//input Shelf string

    /*Check for Shelf string*/
    if(Shelfstring.matches(Shelfreg)){
        System.out.println("Correct");
    }
    else{
        System.out.println("False");
    }
    /*Check for Shelf string*/
}

}