我正在嘗試對車輛登記號進行簡單驗證。
它必須包括“ - ”破折號/連字符。示例:BIR - 5698
它只允許數字/字母和連字符。
所有其他符號均無效。( `~!@#$%^&*()_ =./;,<>":|[]{} )
我的代碼 -
public static void main(String[] args) { Scanner in = new Scanner(System.in); if (in.hasNext("[A-Za]")) { System.out.println("Vehicles :" vehicles ); }else { System.out.println("Enter a Valid Value");
謝謝你。非常感謝您的幫助。
uj5u.com熱心網友回復:
我不確定您作為示例注冊號顯示的內容是否是車輛注冊號的實際格式(3 個字符、一個破折號、4 個字符)。破折號前后的空格是否需要存在或者是可選的?破折號前是否只有三個字母數字字符,破折號后總是有 4 個字母數字字符?因為你沒有這樣表示,我會假設是這樣。下面提供的正則運算式可以很容易地修改以適應所需的任何格式。
這是代碼:
String ls = System.lineSeparator();
Scanner in = new Scanner(System.in);
String vrn = "";
while (vrn.isEmpty()) {
System.out.print("Please enter a valid Vehicle Registration number" ls
"or 'q' to quit: -> ");
vrn = in.nextLine().trim();
if (vrn.equalsIgnoreCase("Q")) { //Quit?
return;
}
// Validate entry...
if (!vrn.matches("(?i)[A-Z0-9]{3} ?\\- ?[A-Z0-9]{4}")) {
System.out.println("Invalid Vehicle Registation Number! ("
vrn ") Try again..." ls);
vrn = ""; // Empty vrn so to re-loop.
}
}
System.out.println("VALID VRN!");
關于正則運算式(regex):
(?i)字母不區分大小寫;[A-Z0-9]{3}破折號前的任何 3 個字母數字字符(A到Z、a到z或0到9) ;?強制破折號 (-)之前的 可選單個空格;\\-一個強制性的單一文字短劃線字符;?強制破折號 (-)后的 可選單個空格;[A-Z0-9]{4}破折號后的任何 4 個字母數字字符(A到Z、a到z或0到9) ;
如果您想更改正則運算式中允許的字符數,那么您可以考慮以下幾個示例中的任何一個:
{3}僅允許 3 個字符;{3,6}僅允許 3 到 6 個字符;{3,}允許 3 個或更多字符;- `{0,} 允許 0 個或更多字符。
uj5u.com熱心網友回復:
添加所有有效字符:
if (in.hasNext("[A-Za-z0-9\-]")) {
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521184.html
