首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java中的特定字符串格式

java中的特定字符串格式
EN

Stack Overflow用户
提问于 2017-03-06 21:06:29
回答 4查看 1K关注 0票数 0

我想在java中验证一个字符串,该字符串包含以下顺序:

SAVA950720HMCLZL04

也就是说,四个字母,六个数字,六个字母,最后是两个数字。

我读过关于正则表达式的文章,但是我不知道如何实现它。

我做了这个方法来验证前四个字母。

代码语言:javascript
运行
复制
 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);
 }
 }

我认为我可能错了,因为我不知道如何正确地执行它,对我的问题的正确解决办法有什么帮助吗?

EN

回答 4

Stack Overflow用户

发布于 2017-03-06 21:18:24

在您的情况下,Regex模式应该是:

代码语言:javascript
运行
复制
[a-zA-Z]{4}[0-9]{6}[a-zA-Z]{6}[0-9]{2}

查找匹配很简单:

代码语言:javascript
运行
复制
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 {
        ...
    }
}

您可以在这里测试regex,https://regex101.com/

编辑

我使用0-9代替\d来确保只对数字进行安全匹配。更多细节可以在这里找到:Should I use \d or [0-9] to match digits in a Perl regex?

票数 2
EN

Stack Overflow用户

发布于 2017-03-06 21:15:10

  1. Matcher.match尝试将整个字符串与模式匹配,而当前模式只验证4个字符。下面是测试正则表达式的方法:
代码语言:javascript
运行
复制
- You can put `.*` at the end of regular expression to match rest of the String
- You can alternatively use `Matcher.find` or `Matcher.lookingAt` to match against substring

  1. 您的模式有一个错误,第二个间隔是太宽的A-zA-Z
票数 0
EN

Stack Overflow用户

发布于 2017-03-06 21:17:54

试试这个Regex模式:

代码语言:javascript
运行
复制
[a-zA-Z]{4}\d{6}[a-zA-Z]{6}\d{2} 

以上将验证四个字母,六个数字,六个字母,最后两个数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42635543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档