[英]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.