//是否合法的手机号号码
function mobile(s) {
    var regex = /^((\(\d{2,3}\))|(\d{3}\-))?1\d{10}$/;
    if (!regex.exec(s)) {
          return false
    }
    return true
}

解决方案 »

  1.   

    •了解正则表达式的作用
    •学会使用Parttern和Matcher类
    •String类对正则表达式的支持
    正则表达式是在JDK1.4之后才加入到java中,如果在1.4之前java中想要使用正则表达式的话,就必须要去apache的网站上下载一个正则表达式的开发包, 正则表达式最早是在PHP使用并得到广泛的好评,主要的功能是进行一些复杂字符串的校验。正则的规则基本上在每一门语言中都可以使用。
    例子:使用普通的方式去验证一串字符串是否全部为数组
    package com.wanczy.regex;public class RegexDemo01 {
    public static void main(String[] args) {
    String s = "13423a42565467568";
    char c[] = s.toCharArray();
    boolean bool = true;
    for (int i = 0; i < c.length; i++) {
    if(!(c[i]>='0' && c[i]<='9')){//只要有一个元素不再0-9之间吗,那么我们说字符串不是全部由数字组成
    bool = false;
    break;
    }
    }
    if(bool){
    System.out.println("字符串全部由数字组成");
    }else{
    System.out.println("字符串不全部由数字组成");
    }
    }
    }使用正则:
    package com.wanczy.regex;public class RegexDemo02 {
    public static void main(String[] args) {
    String s = "1342342565467568";
    if(s.matches("\\d+")){
    System.out.println("字符串全部由数字组成");
    }else{
    System.out.println("字符串不全部由数字组成");
    }
    }
    }
    正则表达式:
    Pattern 类,列出了全部的正则表达式的内容
    主要的正则内容:
    •字符匹配:
    编号 正则内容 描述
    1 [abc] 表示取值可能是a或b或c
    2 [^abc] 表示取值不可能是a或b或c
    3 [a-zA-Z] 表示全部由字母组成,大小写都可以

    •简短表达式
    编号 正则内容 描述
    1 \d 表示由数字组成
    2 \D 表示由非数字组成
    3 \s 表示由空格组成\n \t
    4 \S 表示由非空格组成
    5 \w 表示由数字字母下划线组成
    6 \W 表示由非数字字母下划线组成
    •列出出现次数的表达式
    X? X,一次或一次也没有
    X* X,零次或多次
    X+ X,一次或多次
    X{n} X,恰好 n 次
    X{n,} X,至少 n 次
    X{n,m} X,至少 n 次,但是不超过 m 次
    •关系
    XY X 后跟 Y
    X|Y X 或 Y
    手机号码的验证:
    package com.wanczy.regex;public class RegexDemo3 {
    public static void main(String[] args) {
    String s = "12515967537";
    if(s.matches("1(3|4|5|8)\\d{9}")){
    System.out.println("是手机号码");
    }else{
    System.out.println("不是手机号码");
    }
    }
    }
    Pattern类:是正则操作最重要的一个类,所有的正则规范都需要在Pattern类进行规定。
    Matcher类:进行正则匹配
    •取得Pattern的实例:public static Pattern compile(String regex)
    •取得Matcher类的实例:public Matcher matcher(CharSequence input)
    •进行字符串拆分:public String[] split(CharSequence input)
    •进行字符串的替换:public String replaceAll(String replacement)
    范例1:进行字符串的校验
    package com.wanczy.regex;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexDemo4 {
    public static void main(String[] args) {
    String s = "13515967537";
    Pattern p = Pattern.compile("1(3|4|5|8)\\d{9}");//定义规则
    Matcher m = p.matcher(s);//s需要匹配的字符串
    if(m.matches()){
    System.out.println("是手机号码");
    }else{
    System.out.println("不是手机号码");
    }
    }
    }
    范例2:字符串拆分“abc123qwe9008sdf109werqwer220mmnnhni12580uh”
    package com.wanczy.regex;import java.util.regex.Pattern;public class RegexDemo5 {
    public static void main(String[] args) {
    String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
    Pattern p = Pattern.compile("\\d+");//定义规则
    String str[] = p.split(s);//进行拆分
    for (int i = 0; i < str.length; i++) {
    System.out.println(str[i]);
    }
    }
    }
    范例3:进行字符串的替换
    package com.wanczy.regex;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexDemo06 {
    public static void main(String[] args) {
    String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
    Pattern p = Pattern.compile("\\d+");//定义规则
    Matcher m = p.matcher(s);//s需要匹配的字符串
    s = m.replaceAll("中国您好");
    System.out.println(s);
    }
    }Pattern:主要用于定义正则规范,并进行字符串拆分
    Matcher:主要作用是用于正则的校验,并进行字符串的替换String类对正则的支持:java在JDK1.4之后加入了正则表达式,随后更新了String类的操作,而使得某些操作不需要对Pattern和Matcher类进行实例化,使用String类的方法就可以了。
    •public boolean matches(String regex):进行正则的匹配
    •public String replaceAll(String regex, String replacement):根据规定的正则进行替换
    •public String replaceFirst(String regex, String replacement):根据正则替换第一个匹配正则的字符串
    •public String[] split(String regex):根据规定的正则进行字符串的分割
    范例:替换
    package com.wanczy.regex;
    public class RegexDemo07 {
    public static void main(String[] args) {
    String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
    s = s.replaceAll("\\d+", "中国您好");
    System.out.println(s);
    }
    }范例:替换第一个匹配正则的字符串
    package com.wanczy.regex;
    public class RegexDemo07 {
    public static void main(String[] args) {
    String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
    s = s.replaceFirst("\\d+", "中国您好");
    System.out.println(s);
    }
    }范例:进行字符串分割
    package com.wanczy.regex;
    public class RegexDemo07 {
    public static void main(String[] args) {
    String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";
    String str[] = s.split("\\d+");//进行拆分
    for (int i = 0; i < str.length; i++) {
    System.out.println(str[i]);
    }
    }
    }