正则表达式

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

https://baike.baidu.com/item/正则表达式/1700215?fr=aladdin

正则符号:

含义

符号

数字

[0-9]   \\d

字母

[a-zA-Z]

空白字符

[ \n\t\r\f\x0B]

表示非

[^规则]

任意字符(换行除外)

(点)

正则开始

^

正则结束

$

正则数量:

符号

含义

+

n≥1   1到多个

*

n≥0   0到多个

?

0≤ n ≤1   0或1个

{n}

n个

{n,}

n ≤    n到多个

{n,m}

n≤num ≤m   n到m个

正则逻辑:

含义

符号

分组

()

  |

 什么都不写

 实例1:验证邮箱

public class Judge {
    public static void main(String[] args) {
        //定义要匹配Email地址的正则表达式
        String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
        String str1 = "aaa@";                //定义要进行验证的字符串
        String str2 = "aaaaa";
        String str3 = "1111@111ffyu.dfg.com";
        if(str1.matches(regex)) {            //判断字符串变量是否与正则表达式匹配
            System.out.println(str1+"是一个合法的Email地址格式");
        }
        if(str2.matches(regex)) {            //判断字符串变量是否与正则表达式匹配
            System.out.println(str2+"是一个合法的Email地址格式");
        }
        if(str3.matches(regex)) {            //判断字符串变量是否与正则表达式匹配
            System.out.println(str3+"是一个合法的Email地址格式");
        }
    }
}

正则表达式分析:

  通常情况下Email的格式为“X@X.com.cn”。字符X表示任意一个或多个字符,@为邮箱地址中的特有符号,符号@后还有一个或多个字符,之后是字符“.com”或“.cn”。字符集"\\w"匹配任意字符,符号“+”表示字符可以出现一次或多次,表达式"(\\.\\w)*"表示形如“.com”格式的字符串可以出现0次或多次。而最后的表达式“\\.\\w+”用于匹配Email地址中的结尾字符,如“.com”。

实例2:验证手机号

import java.util.Scanner;

public class Mobile {
    public static void main(String[] args) {
        //手机号是11位数字,前3位是136/130开头,后八位是随机数
        Scanner input = new Scanner(System.in);
        System.out.println("请输入手机号:");
        String phoneNumber = input.nextLine();
        //规则
        String gz = "^(([1][3][6])|([1][3][0]))([0-9]{8})$";
        boolean rel = phoneNumber.matches(gz);
        if (rel) {
            System.out.println("ok");
        }else {
            System.out.println("no");
        }
    }
}

实例3:验证邮箱

//邮箱zhangsan_.abc@qq.com为例,前缀:字母、数字、下划线、点、减号,@,qq/126/139/sina,com/com.cn/org/cn
public class EmailJudge {
    public static void main(String[] args) {
        String str = "asd123@qq.com";
        //规则
        String gz = "^([0-9a-zA-Z_.-]{3,18})"+"[@]"+"(([q]{2})|([1][2][6])|([1][3][9])|([s][i][n][a]))[.]"
        +"(([c][o][m])|([c][n])|([c][o][m][.][c][n]))$";
        boolean rel = str.matches(gz);
        if (rel) {
            System.out.println("ok");
        } else {
            System.out.println("no");
        }
    }
}

 

posted @ 2018-06-20 20:19  xiaotao520  阅读(118)  评论(0编辑  收藏  举报