为了账号安全,请及时绑定邮箱和手机立即绑定

将特定模式与范围匹配的正则表达式

将特定模式与范围匹配的正则表达式

Helenr 2021-05-10 16:47:50
我想检查一个字符串是否匹配1-2个字母,1-4个数字和1个字母的模式。(例如:CC44C,C4444C)。我知道这str.matches("^[A-Z]{2}\\d{4}[A-Z]{1}")将完全匹配2个字母,4个数字和1个字母的模式。(例如:CC4444C)但是,如何使它与某个范围(即1-2个字母,1-4个数字)匹配的模式呢?我已经尝试过str.matches("^[A-Z]{1-2}\\d{1-4}[A-Z]{1}"),但是它给了我以下错误:java.util.regex.PatternSyntaxException: Unclosed counted closure near index 8^[A-Z]{2-3}\d{1-4}[A-Z]{1}
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您需要将{1-2}更改为{1,2},您可以将其理解为{minimun,maximum}。请运行以下示例并查看结果。


public class RegularExpression {


public static void main(String[] ar) {

    String str1 = "CC44C";

    String str2 = "C4444C";

    String str3 = "4444C";

    String str4 = "SDFSD123C";

    String pattern = "^[A-Z]{1,2}\\d{1,4}[A-Z]{1}";

    System.out.println(str1+" matches?: "+str1.matches(pattern));

    System.out.println(str2+" matches?: "+str2.matches(pattern));

    System.out.println(str3+" matches?: "+str3.matches(pattern));

    System.out.println(str4+" matches?: "+str4.matches(pattern));

}

}


此外,如果您不知道最大值,则可以使用{1,}。


    String newPattern = "^[A-Za-z]{1,}\\d{1,}[A-Za-z]{1,}";

您可以将上面的模式更改为newPattern并查看结果。


希望这可以对您有所帮助:)


查看完整回答
反对 回复 2021-05-19
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信