簡體   English   中英

字符串中的Java正則表達式字符

[英]Java regular expression characters in a string

我正在處理一個項目,該項目使用戶輸入一個RFID,該RFID必須是固定為9個字符的字符串,並以十六進制表示,因此每個字符都是0到9的數字或字母A到F中的一個。不敏感)

然后,我還需要輸入固定在6個字符上的貨架位置,第一個字符是's',表示它是貨架位置,后跟5位數字。 EX:“ s04013”(不區分大小寫)

我使用掃描儀將輸入存儲在變量RFID和originalLocation中。 我有兩個問題:

1)如何檢查並確保輸入有效,否則可能引發異常? 我認為我必須使用正則表達式,但不確定。

2)是否可以將字符串的長度固定為指定的字符數?

任何幫助/建議將不勝感激非常感謝!

(s [0-9] {5} | [0-9a-f] {9})

這個正則表達式應該可以解決您的問題。

在這里查看演示

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");
}

我不知道我是否正確理解了您的問題,但這就是我從您的問題中收集到的信息。 碼:

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*/
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM