正则表达式 - 无法访问的声明

时间:2013-04-20 14:43:15

标签: java regex

我必须验证EUI48地址,目前我正在使用for each循环。我想用正则表达式来做这件事。但到目前为止还没有运气。

if(!input.matches("[0-9A-Fa-f]{12}+"));
            throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input);

        setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input);

我在setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input);说“无法接受的陈述”时发生了交战。

输入是一个字符串。

任何人都知道我做错了什么? :)

5 个答案:

答案 0 :(得分:1)

;语句后面有if,因此throw语句将始终执行,而不仅仅是输入不匹配。

应该是

if (!input.matches(...)) {
  throw new SequenceException(...);
}

setSubstitute(...);

答案 1 :(得分:1)

在if语句后删除分号,并使用大括号包围条件块的主体。目前,执行条件语句,但其结果与是否抛出异常无关。实际上,异常总是被抛出,导致对setSubstitute()的调用无法访问。

if(!input.matches("[0-9A-Fa-f]{12}+")){
    throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input);
}

setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input);

答案 2 :(得分:1)

您应该在“if”语句末尾删除分号:

if(!input.matches("[0-9A-Fa-f]{12}+")) {
        throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input);
}

答案 3 :(得分:1)

原因是你的if语句后面有分号;它等同于指定一个空块,如下所示:

if(!input.matches("[0-9A-Fa-f]{12}+")) {
    /* Nothing */
}
throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input);
setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input);

因此,您的代码始终会引发异常,并且永远不会调用setSubstitute

答案 4 :(得分:0)

你的if语句不应该有;最后