Pattern|Android API Matcher|Android API

UserName校验

这样的功能需求多用于账号注册,可以通过如下的正则表达式实现支持字母、数字、下划线的6~16位字符账号注册

public static boolean isValidUserName(String username){
       Pattern p = Pattern.compile("(^[a-zA-Z0-9_]{6,16})");
       Matcher m = p.matcher(username);
       return m.matches();
  }

手机号校验

手机号校验首先要了解手机号有哪些,以国内的手机号为例: > 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188

联通:130、131、132、152、155、156、185、186

电信:133、153、180、189、(1349卫通)

编写正则表达式进行实现:

public static boolean isValidMobile(String mobile){
        Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
        Matcher m = p.matcher(mobiles);
        return m.matches();
    }

以上对于手机号的校验非常严格,在Android的Patterns类中封装了手机号校验的正则表达式:

public static final Pattern PHONE
        = Pattern.compile(                      // sdd = space, dot, or dash
                "(\\+[0-9]+[\\- \\.]*)?"        // +<digits><sdd>*
                + "(\\([0-9]+\\)[\\- \\.]*)?"   // (<digits>)<sdd>*
                + "([0-9][0-9\\- \\.]+[0-9])"); // <digit><digit|sdd>+<digit>

可见,对于手机号只要求是0~9的数字。使用SDK中的正则表达式:

public static boolean isValidMobile(String phone) {
        return Patterns.PHONE.matcher(phone).matches();
  }

其他字符串校验

除此之外,Patterns中还封装了Email、IP-address、WEB_URL等正则表达式。

校验Email地址:

 private boolean isValidMail(String email) {
    return Patterns.EMAIL_ADDRESS.matcher(email).matches();
  }

校验URL:

  private boolean isValidWebUrl(String url) {
    return Patterns.WEB_URL.matcher(url).matches();
  }

参考

Java正则表达式:Pattern类和Matcher类