模式语法异常如何工作
how pattern syntax exception works
private static final String NAME_REGEX = "^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$";
private static final Pattern NAME_PATTERN = Pattern.compile(NAME_REGEX);
如何在 try n catch 块中使用以下语句检查名称是否有效并显示错误消息(如果有)?
NAME_PATTERN.matcher(name).matches()
以及如何使用PatternSyntaxException
您不需要 try...catch
来检查名称是否有效。你写的那一行: NAME_PATTERN.matcher(name).matches()
returns 一个布尔值,如果匹配则为真,否则为假。所以你可以在 if...else
块中检查这个布尔值:
boolean matches = NAME_PATTERN.matcher(name).matches();
if (matches) {
System.out.println("valid");
} else {
System.out.println("invalid");
}
PatternSyntaxException class 表示抛出未经检查的异常以指示正则表达式模式中的语法错误。这意味着如果您的 NAME_REGEX
正则表达式有语法错误,那么当您调用 Pattern.compile(NAME_REGEX)
时将抛出此异常。
你可以try...catch
这样:
public static void main(String[] args) {
try {
final String NAME_REGEX = "^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$";
final Pattern NAME_PATTERN = Pattern.compile(NAME_REGEX);
String name = "sdasdada"; //the name input
boolean matches = NAME_PATTERN.matcher(name).matches();
if (matches) {
System.out.println("valid");
} else {
System.out.println("invalid");
}
} catch(PatternSyntaxException e){
System.out.println("PatternSyntaxException: ");
System.out.println("Description: "+ e.getDescription());
System.out.println("Index: "+ e.getIndex());
System.out.println("Message: "+ e.getMessage());
System.out.println("Pattern: "+ e.getPattern());
}
}
private static final String NAME_REGEX = "^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$";
private static final Pattern NAME_PATTERN = Pattern.compile(NAME_REGEX);
如何在 try n catch 块中使用以下语句检查名称是否有效并显示错误消息(如果有)?
NAME_PATTERN.matcher(name).matches()
以及如何使用PatternSyntaxException
您不需要 try...catch
来检查名称是否有效。你写的那一行: NAME_PATTERN.matcher(name).matches()
returns 一个布尔值,如果匹配则为真,否则为假。所以你可以在 if...else
块中检查这个布尔值:
boolean matches = NAME_PATTERN.matcher(name).matches();
if (matches) {
System.out.println("valid");
} else {
System.out.println("invalid");
}
PatternSyntaxException class 表示抛出未经检查的异常以指示正则表达式模式中的语法错误。这意味着如果您的 NAME_REGEX
正则表达式有语法错误,那么当您调用 Pattern.compile(NAME_REGEX)
时将抛出此异常。
你可以try...catch
这样:
public static void main(String[] args) {
try {
final String NAME_REGEX = "^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$";
final Pattern NAME_PATTERN = Pattern.compile(NAME_REGEX);
String name = "sdasdada"; //the name input
boolean matches = NAME_PATTERN.matcher(name).matches();
if (matches) {
System.out.println("valid");
} else {
System.out.println("invalid");
}
} catch(PatternSyntaxException e){
System.out.println("PatternSyntaxException: ");
System.out.println("Description: "+ e.getDescription());
System.out.println("Index: "+ e.getIndex());
System.out.println("Message: "+ e.getMessage());
System.out.println("Pattern: "+ e.getPattern());
}
}