Java 提供了一些有用的字符类,如\d
和\w
。我可以定义自己的角色类别吗?例如,能够为 [A-Za-z_]
等字符类定义简写会很有用。
最佳答案
Can I define my own character classes?
不,你不能。
就个人而言,当我有一个(稍微)复杂的正则表达式时,我将正则表达式分解为更小的子正则表达式,然后使用 String.format(...)
将它们“粘合”在一起,例如这个:
public static boolean isValidIP4(String address) {
String block_0_255 = "(0|[1-9]\\d|2[0-4]\\d|25[0-5])";
String regex = String.format(
"%s(\\.%s){3}",
block_0_255, block_0_255
);
return address.matches(regex);
}
这比单一模式更具可读性:
"(0|[1-9]\\d|2[0-4]\\d|25[0-5])(\\.(0|[1-9]\\d|2[0-4]\\d|25[0-5])){3}"
请注意,这只是一个简单的示例:验证 IP 地址可能最好由 java.net
包中的一个类来完成,如果您这样做,模式应该放在方法之外并进行预编译。
小心模式中的 %
符号!
关于java - 我可以定义自定义字符类简写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775383/