我正在尝试为异常编写代码。 如果输入的内容与下面的模式不符(仅是示例),则会抛出异常消息。
8454T3477-90
这是我想到的代码。但是,我不确定这是否是正确的方法...
public void setLegalDescription(String legalDescription) throws MyInvalidLegalDescriptionException
{
String valid = ("[0-9999][A-Z][0-9999]-[0-99]");
if (!legalDescription.matches(valid))
{
//throw new MyInvalidLegalDescriptionException("Invalid format! Should be " + "e.g 4050F8335-14");
}
this.legalDescription = legalDescription;
}
答案 0 :(得分:6)
您的图案略微偏离。试试这个版本:
String valid = ("[0-9]{4}[A-Z][0-9]{4}-[0-9]{2}");
if (!legalDescription.matches(valid))
{
// throw new MyInvalidLegalDescriptionException("Invalid format! Should be " + "e.g 4050F8335-14");
}
对正则表达式的解释:
[0-9]{4} any 4 digits
[A-Z] any capital letter
[0-9]{4} any 4 digits
- a dash
[0-9]{2} any 2 digits
应注意,[0-9999]
不会匹配0到9999之间的任何数字。实际上,它仅匹配0到9之间的一个数字。
如果标识符的宽度不固定,则可以使用以下模式:
[0-9]{1,4}[A-Z][0-9]{1,4}-[0-9]{1,2}
答案 1 :(得分:0)
基于Jorn Vemee的评论
[0-9999]{1,4}[A-Z][0-9999]{1,4}-[0-99]{1,2}
匹配 8454T3477-90 也匹配例如: 1A1-1 等