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

标签 java regex

我需要验证容器号码。有一个行业标准规定,长度只能是字母数字和 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/

相关文章:

java - Java中变量的内存地址

java - 我想有效地将​​正则表达式应用于整个文件

mysql - django 过滤器正则表达式在 python 重新工作时不起作用

javascript - 正则表达式(替换所有非数字字符并强制执行 2 个小数位数字)

java - jMonkeyEngine 通过质量启用相对重力

java - 我在哪里可以找到 Eclipse 中的导入文件

java - 除非我在本地主机中,否则无法访问 Tomcat Manager

java - Spring Boot 的默认 session 存储是什么?

regex - 解析shell脚本中的键值

c# - 去掉字符串最右边的数字或字母