So khớp phone number trong Regular Expression trong Java



Miêu tả vấn đề

Cách so khớp phone number trong một list trong Java?

Giải pháp

Ví dụ sau minh họa cách so khớp phone number trong một list tới một pattern cụ thể bởi sử dụng phương thức phone.matches(phoneNumberPattern) trong Java.

public class MatchPhoneNumber {
   public static void main(String args[]) {
      isPhoneValid("1-999-585-4009");
      isPhoneValid("999-585-4009");
      isPhoneValid("1-585-4009");
      isPhoneValid("585-4009");
      isPhoneValid("1.999-585-4009");
      isPhoneValid("999 585-4009");
      isPhoneValid("1 585 4009");
      isPhoneValid("111-Java2s");
   }
   public static boolean isPhoneValid(String phone) {
      boolean retval = false;
      String phoneNumberPattern = 
      "(\\d-)?(\\d{3}-)?\\d{3}-\\d{4}";
      retval = phone.matches(phoneNumberPattern);
      String msg = "NO MATCH: pattern:" + phone
      + "\r\n regex: " + phoneNumberPattern;
      if (retval) {
         msg = " MATCH: pattern:" + phone 
         + "\r\n regex: " + phoneNumberPattern;
      }
      System.out.println(msg + "\r\n");
      return retval;
   }
}

Kết quả

Code trên sẽ cho kết quả sau:

MATCH: pattern:1-999-585-4009
	    regex: (\\d-)?(\\d{3}-)?\\d{3}-\\d{4}
MATCH: pattern:999-585-4009
	    regex: (\\d-)?(\\d{3}-)?\\d{3}-\\d{4}
MATCH: pattern:1-585-4009
	    regex: (\\d-)?(\\d{3}-)?\\d{3}-\\d{4}
NOMATCH: pattern:1.999-585-4009
 regex: (\\d-)?(\\d{3}-)?\\d{3}-\\d{4}
NOMATCH: pattern:999 585-4009
 regex: (\\d-)?(\\d{3}-)?\\d{3}-\\d{4}
NOMATCH: pattern:1 585 4009
 regex: (\\d-)?(\\d{3}-)?\\d{3}-\\d{4}
NOMATCH: pattern:111-Java2s
 regex: (\\d-)?(\\d{3}-)?\\d{3}-\\d{4}

regular_expression_trong_java.jsp