Java异常模式

时间:2019-04-07 15:26:17

标签: java

我正在尝试为异常编写代码。 如果输入的内容与下面的模式不符(仅是示例),则会抛出异常消息。

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;
    }

2 个答案:

答案 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