【问题标题】:Java regular expression characters in a string字符串中的 Java 正则表达式字符
【发布时间】:2016-07-22 05:23:50
【问题描述】:

我现在正在做一个项目,让用户输入一个 RFID,它必须是一个固定长度为 9 个字符并以十六进制表示的字符串,因此每个字符要么是 0 到 9 之间的数字,要么是字母 A 到 F 之一.(不区分大小写)

那么我还需要输入一个固定为6个字符的货架位置,第一个字符是's'表示它是货架位置,后面是一个5位数的数字。例如:“s04013”(不区分大小写)

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

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

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

任何帮助/建议将不胜感激 非常感谢!

【问题讨论】:

  • 你能提供一些要匹配的示例字符串吗?

标签: java regex string exception character


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助!
  • 很高兴这个答案很有帮助。请考虑接受我的回答。
【解决方案2】:

我不知道我是否正确理解了您的问题,但这就是我从您的问题中收集到的内容。 代码:

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

}

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多