我正在尝试使用匹配("正则表达式"(来抛出异常,但我总是出错。有没有办法匹配标题中的模式?例如,模式应为"s98340"或"s12345"。开头只有一个字符,后跟任何 5 位数字。 要捕获异常,请执行以下操作:
try{
if(originalLocation.length() != 6 && originalLocation.matches("s[0-9]{5}"))
throw new IllegalOriginalLocationException("Original Location is invalid.");
}
catch(IllegalOriginalLocationException ex){
System.out.println(ex);
}
当我设置字符串 sr = "s4a234" 时,没有捕获异常。
当您将类似字符串传递给方法s98340
时,originalLocation.length() != 6
条件返回 false,因此,您将获得当前行为。
由于正则表达式已经匹配仅 6 个字符的字符串,因此删除该条件就足够了:
try {
if(originalLocation.matches("s[0-9]{5}"))
throw new IllegalOriginalLocationException("Original Location is invalid.");
}
catch(IllegalOriginalLocationException ex) {
System.out.println(ex);
}
originalLocation.matches("s[0-9]{5}")
行确保字符串以s
开头,然后正好有 5 个 ASCII 数字。请记住,默认情况下,.matches()
中的模式锚定在字符串的开头和结尾。
intenta con lo siguiente : 尝试 { if(!originalLocation.matches(">^[a-zA-Z]\d\d\d\d\d"(( ...
[a-zA-Z] 下部或上部 [A-Z] 仅更低
我正在测试"s4a234" 和"A12345"和成功!