我需要验证运输集装箱编号。有一个行业标准说,只有字母数字和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()。
有没有人能建议一个更好的正则表达式来满足这两个需求(或者每个需求一个)?
谢谢。
发布于 2010-01-22 11:43:49
"((?:[a-zA-Z0-9]{4}|/{4})[a-zA-Z0-9]{7})"然后,只需检查捕获组1的内容中的编号。
发布于 2014-09-29 17:24:57
如果有人想要正确确认货物集装箱号ISO6346,请参考my Javascript class或Patrik Storm's PHP Class。
https://stackoverflow.com/questions/2114770
复制相似问题