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

Java 用于可选前导正斜杠的正则表达式,java,regex,Java,Regex,我需要验证装运集装箱编号。有一个行业标准说,只有字母数字和11个字符的长度是可以接受的。例:FBXU8891735 然而,也有一个标准的行业惯例,其中前4个字符可以是正斜杠,例如:///8891735 我有两个要求-首先是验证容器编号(如matches()),其次是清理容器编号(如replaceAll()) 我知道,对于匹配()我可以使用一个替代选项,例如: [a-zA-Z0-9]{11}|////[a-zA-Z0-9]{7} 但是,这看起来很难看,我不知道如何将其用于replaceAll()

我需要验证装运集装箱编号。有一个行业标准说,只有字母数字和11个字符的长度是可以接受的。例:FBXU8891735

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

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

我知道,对于匹配()我可以使用一个替代选项,例如:

[a-zA-Z0-9]{11}|////[a-zA-Z0-9]{7}
但是,这看起来很难看,我不知道如何将其用于replaceAll()

有人能推荐一个更好的正则表达式来满足这两个需求(或者每个需求一个)

谢谢

"((?:[a-zA-Z0-9]{4}|/{4})[a-zA-Z0-9]{7})"
然后,只需检查捕获组1的内容中的数字


然后只需检查捕获组1中的编号。

如果有人想要正确验证集装箱编号ISO 6346,请参考目的;或者。

如果有人想要正确验证集装箱编号ISO 6346,请参考目的;或者。

如果要缩短此时间,\w与[a-zA-Z0-9]相同,因此可以使用“((?:\w{4}|/{4})\w{7})”
\w
也匹配下划线。虽然您可能会使用
[^\W\uuz]
。如果您想缩短此长度,\W与[a-zA-Z0-9]相同,因此您可以使用“((?:\W{4}/{4})\W{7}”
\W
也匹配下划线。虽然您可能会使用
[^\W\uuz]
,但需求不是比这更具体吗?前四个字符(如果不替换为斜杠)始终是字母,其余是数字?是的。实际上有一个完整的校验位算法(ISO-6346),但是这个正则表达式并没有尝试这样做。它只是为了清理和验证数据。难道要求不比这更具体吗?前四个字符(如果不替换为斜杠)始终是字母,其余是数字?是的。实际上有一个完整的校验位算法(ISO-6346),但是这个正则表达式并没有尝试这样做。它只是为了清理和验证数据。
"((?:[a-zA-Z0-9]{4}|/{4})[a-zA-Z0-9]{7})"