java 正则表达式

通过String regex (定义标准表达式)

通过String 类型的 . matches方法经行比较

元字符:

元字符在正则表达式的写法意义
..任何一个字符
\d\\d0到9的任何一个数
\D\\D任何一个非数字字符
\s\\s空格类字符 \'t' '\n' '\x0B' '\f' '\r'
\S\\S非空格类字符
\w\\w可用于标识符的字符  不包含美元符
\\W\\W不能用于标识符的字符
\p{Lower}\\p{Lower}小写字母[a - z]
\p{Upper}\\p{Upper}大写字母[A - Z]
\p[ASCLL]\\p[ASCLL]ASCLL字符
\p[Alpha]\\p[Alpha]字母
\p{digit}\\p{digit}

数字字符[0 - 9]

与\\d 有在String中有区别

即\\p{digit}在String中无法使用而\\d可以

\p{Alnum}\p{Alnum}字母或数字
\p{Punct}\\p{Punct}

表点字符

正则表达式中的 [ ] 

1  任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。

2  []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。

3  -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。

4. ^在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。

限定符

1  X?   表示X出现0次或1次。

2  X+   表示X出现1次或多次。

3  X*    表示X出现0次、1次或多次。

4  X{n}  表示X出现n次。

5  X{n,m}  表示X出现n~m次。

6  X{n,}   表示X出现n次或n次以上。

7  XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。

8  X|Y表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f。

9  (X)子表达式,将X看做是一个整体。

例:

测试说明

文件名(fileName)和邮箱(email)会作为函数的参数传入。

输入

  1. HelloWorld.java
  2. laurenyang@edu.com

输出: Java文件名正确

    邮箱名正确

import java.util.*;

publi class HelloWorld {

    public static void judge(String fileName,String email){

        String javaName = "((\\p{Alnum}{1,}\\.){1,}java)";  //java 文件名

        String emailName = "(\\p{Alnum}{1,}\\@.\\p{Alnum}{1,}\\.\\p{Alnum}{1,})"; //邮箱名

        boolean match1 = fileName.matches(javaName);

        boolean match2 = email.matches(emailName);

        if(match1){

            System.out.println("Java文件名正确");

        }

        else{

            System.out.println("Java文件名无效");

        }

        if(match2){

            System.out.println("邮箱名正确");

        }

        else{

            System.out.println("邮箱名无效");

        }

    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String javaName = scanner.nextLine();

        String emailName = scanner.nextLine();

        judge(javaName , emailName);

    }

    

}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TYUT ljk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值