[英]Specific string format in java
我想在Java中驗證包含以下順序的字符串:
SAVA950720HMCLZL04
也就是說,四個字母,六個數字,六個字母以及最后兩個數字。
我在閱讀正則表達式,但是我不明白如何實現它。
我使用這種方法來驗證前四個字母。
public void name(String s){
Pattern pat=Pattern.compile("[a-zA-z]{4}");
Matcher mat=pat.matcher(curp);
if(mat.matches()){
JOptionPane.showMessageDialog(null, "Validating");
}else{
JOptionPane.showMessageDialog(null, "Check your data. please", "error",JOptionPane.ERROR);
}
}
我認為我可能是錯的,因為我不知道如何正確實現它,關於什么是正確解決我的問題的幫助?
您的情況下的正則表達式模式為:
[a-zA-Z]{4}[0-9]{6}[a-zA-Z]{6}[0-9]{2}
查找匹配很簡單:
public void name(String s){
String pattern = "[a-zA-Z]{4}[0-9]{6}[a-zA-Z]{6}[0-9]{2}";
boolean match = s.matches(pattern);
if (match) {
...
} else {
...
}
}
您可以從這里https://regex101.com/測試regex
編輯
我使用[0-9]而不是\\ d來確保僅數字的安全匹配。 在這里可以找到更多詳細信息: 我應該使用\\ d或[0-9]來匹配Perl正則表達式中的數字嗎?
Matcher.match
嘗試將整個String與該模式匹配,並且您當前的模式僅驗證4個字符。 這是測試正則表達式的方法:
.*
放在正則表達式的末尾以匹配字符串的其余部分 Matcher.find
或Matcher.lookingAt
與子字符串進行匹配 您的圖案有錯別字,第二個間隔太寬Az
與AZ
嘗試以下正則表達式模式:
[a-zA-Z]{4}\d{6}[a-zA-Z]{6}\d{2}
上面的代碼將驗證四個字母,六個數字,六個字母以及最后兩個數字。
package com.stackoverflow._42635543;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pat = Pattern.compile("[A-Za-z]{4}[0-9]{6}[A-Za-z]{6}[0-9]{2}");
if (pat.matcher("SAVA950720HMCLZL04").matches()) {
System.out.println("match");
} else {
System.out.println("no match");
}
if (pat.matcher("SAVA950720HMCLZL045").matches()) {
System.out.println("match");
} else {
System.out.println("no match");
}
}
}
產生
match
no match
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.