我必须验证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);
说“无法接受的陈述”时发生了交战。
输入是一个字符串。
任何人都知道我做错了什么? :)
答案 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语句不应该有;最后