Java 正则表达式匹配固定电话号码
固定电话号码的格式因国家和地区而异,以下是一些常见的固定电话号码正则表达式示例,适用于中国大陆、美国和英国等地区。
中国大陆固定电话号码
中国大陆的固定电话号码通常由区号和号码组成,格式为:
- 区号:3-4位数字
- 号码:7-8位数字
常见正则表达式
// 基本格式(带区号)
String regex1 = "^0\\d{2,3}-?\\d{7,8}$";
// 示例:010-12345678, 0755-1234567, 02112345678
// 更严格的格式(带区号和分机号)
String regex2 = "^0\\d{2,3}-?\\d{7,8}(?:-\\d{1,4})?$";
// 示例:010-12345678-1234
// 包含手机号码格式的正则(可选)
String regex3 = "^(0\\d{2,3}-?\\d{7,8}|1[3-9]\\d{9})$";
// 同时匹配固定电话和手机号
使用示例
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class TelephoneRegex {
public static void main(String[] args) {
String regex = "^0\\d{2,3}-?\\d{7,8}$";
Pattern pattern = Pattern.compile(regex);
String[] testNumbers = {
"010-12345678", // 有效
"0755-1234567", // 有效
"02112345678", // 有效
"123456789", // 无效(缺少区号)
"010-123456", // 无效(号码太短)
"010-123456789", // 无效(号码太长)
"abc12345678" // 无效(包含字母)
};
for (String number : testNumbers) {
Matcher matcher = pattern.matcher(number);
System.out.println(number + " : " + matcher.matches());
}
}
}
美国固定电话号码
美国固定电话号码格式为:(XXX) XXX-XXXX 或 XXX-XXX-XXXX
String usRegex = "^(\\(\\d{3}\\) |\\d{3}-)?\\d{3}-\\d{4}$";
// 示例:(123) 456-7890, 123-456-7890
英国固定电话号码
英国固定电话号码格式多样,通常包括区号和号码:
String ukRegex = "^(\\+44|0)\\d{1,4}[ -]?\\d{6,8}$";
// 示例:020 7946 0958, +44 20 7946 0958, 0121-1234567
通用固定电话号码正则表达式
如果需要匹配多个国家的固定电话号码,可以使用以下更通用的表达式:
String universalRegex = "^(\\+?\\d{1,3}[ -]?)?(\\(\\d{2,4}\\)|\\d{2,4})[ -]?\\d{4,8}$";
// 示例:
// +1 (123) 456-7890 (美国)
// +44 20 7946 0958 (英国)
// 010-12345678 (中国)
注意事项
- 正则表达式可能无法覆盖所有可能的固定电话号码格式
- 不同国家的电话号码规则差异很大,需要根据具体需求调整
- 对于生产环境,建议使用专门的电话号码验证库(如Google的libphonenumber)
- 考虑添加空格、括号等格式的变体处理
希望这些示例能帮助你在Java中验证固定电话号码!
