判断一个字符是否有数字组成:

public class Hello{
    public static void main(String[] args) throws Exception {
        String str = "13265";
        System.out.println(str.matches("\\d+"));
    }
    
}

 

1.字符(单个字符)

  x:表示由字母x组成;  

  \\: 匹配“ \ ”转义字符; 两个\\表示一个\

  \t:匹配“ \t ”转义字符;

  \n:匹配换行转义字符;

2. 字符范围

  [abc]:表示可能是字母a、b、c的任意一个

  [^abc]:表示不是字母a、b、c的任意一个

  [a-zA-Z]:表示任意一个字母(大写或小写)

  [0-9]:表示任意一个数字组成

3. 简化表达式:

  . : 点表示任意一位字符

  \d:表示任意一个数字,等价于[0-9];但是要写\\d,两个\表示一个\

  \D:表示任意一个非数字,等于[^0-9]

  \w:表示任意一位字符,由字母、数字、_组成,等价于[a-zA-Z0-9_]

  \W:表示任意一位非字母,等价于[^a-zA-Z0-9_]

  \s:表示任意一位空格,可能是:\n、\t ;

  \S:表示任意一位非空格

  \.:表示小数点

  @:表示符号@

  \-:表示-

4. 边界匹配

  ^ :表示正则匹配开始

  $:表示正则匹配结束

5. 量词描述,如果没有量词,那么每一个出现的正则都只能匹配一个字符

  表达式?:表示此正则表达式可以出现0次或一次;

  表达式+:表示此正则表达式可出现0此或多次;

  表达式*:表示此正则表达式可出现0次或1次或多次;

  表达式{n}:表示此正则表达式正好出现n次;

  表达式{n,}:表示此正则表达式出现n次或n次以上;

  表达式{n,m}:此正则表达式出现n到m此;

6. 逻辑运算

  X正则Y正则:表示X正则之后紧跟着验证Y正则

  X正则|Y正则:表示X正则与Y正则选一个

  ():一组正则;

  

 

范例:进行替换,要非字母的字符替换为逗号

public class Hello{
    public static void main(String[] args) throws Exception {
        String str = "asfd#6@r65wefsdfg¥";
        String regex = "[^a-zA-Z]";
        System.out.println(str.replaceAll(regex, ","));
    }
    
}

范例:进行拆分,将非数字拆分出来

import java.util.Arrays;

public class Hello{
    public static void main(String[] args) throws Exception {
        String str = "asfd#6@r65wefsdfg¥";
        String regex = "[0-9]+";// 或者是://d+
        System.out.println(Arrays.toString(str.split(regex)));
    }
}

范例:判断某一个字符串是否是小数,如果是,转换为double类型

public class Hello{
    public static void main(String[] args) throws Exception {
        String str = "10.234";
        String regex = "\\d+\\.\\d+";
        if(str.matches(regex)) {
            System.out.println(Double.parseDouble(str));
        }else {
            System.out.println("不是小数");
        }
    }
}

范例:匹配日期

 

import java.text.SimpleDateFormat;

public class Hello{
    public static void main(String[] args) throws Exception {
        String str = "2019-10-11";
        String regex = "\\d{4}-\\d{2}-\\d{2}";
        if(str.matches(regex)) {
            System.out.println(new SimpleDateFormat("yyyy-mm-dd").parse(str));
        }else {
            System.out.println("匹配出错");
        }
    }
}

范例:匹配电话号码,组成可能有:

62340411  \\d{7,8}

010-65430411或01063240411   (\\d{3,4}-?)\\d{7,8}

(010)-65480411  ((\\d{3,4}-?)|(\\(\\d{3,4}\\)-?))\\d{7,8}

 范例:验证email地址

简单验证:email由字母数字下划线组成;a@a.a  \\w+@\\w+\\.\\w+

完整验证:用户名部分可以由字母、数字、- 、_ 组成,要求以字母开头,长度6到 30位,在域名后缀只能是.com .cn .net .net.cn .gov  .edn  .org  .me  .e

 

public class Hello{
    public static void main(String[] args) throws Exception {
        String str = "james-y.d_d@info.d.com";
        String regex = "[a-zA-Z][a-zA-Z0-9_\\-\\.]{5,29}@[a-zA-Z0-9_\\-\\.]+\\.(com|net|cn|net\\.cn|com\\.cn|gov|edu|org|me)";
        System.out.println(str.matches(regex));
    }
}

 

 

 

 

 

 

 

 

  

posted on 2018-04-15 23:29  lonske  阅读(183)  评论(0编辑  收藏  举报