gpt4 book ai didi

java - 用于可选前导正斜杠的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:47 24 4
gpt4 key购买 nike

我需要验证容器号码。有一个行业标准规定,长度只能是字母数字和 11 个字符。例如:FBXU8891735

但是,还有一个标准的行业惯例,其中前 4 个字符可以是正斜杠,例如:////8891735

我有两个要求 - 首先验证容器编号(例如 matches()),其次清理容器编号(例如 ReplaceAll())

System.out.println("MSCU3720090".matches("[a-zA-Z0-9]{11}"));    //true - ok
System.out.println("////3720090".matches("[a-zA-Z0-9]{11}")); //false - fail

System.out.println("MSCU3720090".replaceAll("[^a-zA-Z0-9]*", "")); //MSCU3720090 - ok
System.out.println("////3720090".replaceAll("[^a-zA-Z0-9]*", "")); //3720090 - fail

我知道对于 matches() 我可以使用替代方案,例如:

[a-zA-Z0-9]{11}|////[a-zA-Z0-9]{7}

但是这看起来很难看,我不知道如何将它用于replaceAll()。

有人可以建议一个更好的正则表达式来满足这两个要求(或每个要求一个)吗?

谢谢。

最佳答案

"((?:[a-zA-Z0-9]{4}|/{4})[a-zA-Z0-9]{7})"

然后只需检查捕获组 1 的内容中的数字即可。

关于java - 用于可选前导正斜杠的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2114770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com