Java中的正则表达式电话号码验证

时间:2020-02-23 14:34:38  来源:igfitidea点击:

使用正则表达式验证电话号码非常棘手,因为电话号码可以用多种格式编写,也可以有扩展名。

例如,以下是一些写电话号码的常用方法:

  • 1234567890
  • 123-456-7890
  • 123-456-7890 x1234
  • 123-456-7890 ext1234
  • (123)-456-7890
  • 123.456.7890
  • 123 456 7890

Java中的电话号码验证

其中我使用Java正则表达式来验证上述任何格式的电话号码。

package com.theitroad.util;

public class PhoneNumberValidator {
	
	
	public static void main(String[] args) {
		System.out.println("Phone number 1234567890 validation result: "+validatePhoneNumber("1234567890"));
		System.out.println("Phone number 123-456-7890 validation result: "+validatePhoneNumber("123-456-7890"));
		System.out.println("Phone number 123-456-7890 x1234 validation result: "+validatePhoneNumber("123-456-7890 x1234"));
		System.out.println("Phone number 123-456-7890 ext1234 validation result: "+validatePhoneNumber("123-456-7890 ext1234"));
		System.out.println("Phone number (123)-456-7890 validation result: "+validatePhoneNumber("(123)-456-7890"));
		System.out.println("Phone number 123.456.7890 validation result: "+validatePhoneNumber("123.456.7890"));
		System.out.println("Phone number 123 456 7890 validation result: "+validatePhoneNumber("123 456 7890"));
	}

	private static boolean validatePhoneNumber(String phoneNo) {
		//validate phone numbers of format "1234567890"
		if (phoneNo.matches("\d{10}")) return true;
		//validating phone number with -, . or spaces
		else if(phoneNo.matches("\d{3}[-\.\s]\d{3}[-\.\s]\d{4}")) return true;
		//validating phone number with extension length from 3 to 5
		else if(phoneNo.matches("\d{3}-\d{3}-\d{4}\s(x|(ext))\d{3,5}")) return true;
		//validating phone number where area code is in braces ()
		else if(phoneNo.matches("\(\d{3}\)-\d{3}-\d{4}")) return true;
		//return false if nothing matches the input
		else return false;
		
	}

}

这是上述电话号码正则表达式验证程序的输出。

Phone number 1234567890 validation result: true
Phone number 123-456-7890 validation result: true
Phone number 123-456-7890 x1234 validation result: true
Phone number 123-456-7890 ext1234 validation result: true
Phone number (123)-456-7890 validation result: true
Phone number 123.456.7890 validation result: true
Phone number 123 456 7890 validation result: true

该程序最好的部分是易于理解,您可以轻松扩展它以支持其他电话号码格式。