小白入门正则表达式

正则表达式作用与规则

作用:用于操作字符串
例1
QQ号码要求:5-10位,0不为开头,只由数字构成

如果不用正则表达式,而使用String类则代码繁琐:

package dayone;

public class helloworld {

	public static void main(String[] args) {
		//checkqq();
		helloworld ob = new helloworld();
		ob.checkqq();
	}
	public void checkqq() {
		String qq = "99999012345";
		int len = qq.length();
		if(len>=5 && len<=10) {
			if(!qq.startsWith("0")) {
				char[] arr = qq.toCharArray();
				boolean flag = true;
				for(int x=0; x<arr.length; x++) {
					if(!(arr[x]>='0' && arr[x]<='9')) {
						flag = false;
						break;
					}
				}
				if(flag) {
					System.out.println(qq+" pass");
				}
				else {
					System.out.println("无效字符");
				}
			}
			else {
				System.out.println("不能0开头");
			}
		}
		else {
			System.out.println("长度不符");
		}
	}

}

结果输出长度不符

使用正则表达式:

package dayone;

public class helloworld {

	public static void main(String[] args) {
		checkqq();
	}
	public static void checkqq() {
		String qq = "4364457667";
	    String regex = "[1-9][0-9] {4,14}";
	    boolean flag = qq.matches(regex);
	    if(flag)
	    	System.out.println(qq+" is pass");
	    else
	    	System.out.println("不符");
}

例2
判断:19xx
正则:1 9 \d \d
java字符串:“19\\d\\d”(此处第一个\是对第二个\转义)
java代码

String str="1998";
boolean is19xx=str.matches(""19\\d\\d"");

正则表达式就是用来描述规则的字符串(匹配字符串),可以用于任何语言
jdk内置正则表达式引擎:java.util.regex
记忆:英文单词matched(匹配的adj.匹配v)——>matches(匹配)

规则:
1.如何正确编写正则表达式:

  • 精确匹配:“abc”
    "abc"√
    "Abc " “ab” “abcd” "acb"×

  • 特殊字符需要转义
    精确匹配:“a\&c”
    "a&c"√
    "ab"×
    “abc"×
    编写Java代码为"a\\&c”

  • 精确匹配:“a\u548cc”,非ASCII字符如中文用\u####表示
    "a和c"√
    "a或c"×
    "ab"×
    "abc"×

  • 特殊符号.可以表示一个任意字符:“a.c”
    "abc"√
    "a&c"√
    "ab"×
    "a和c"×(一中文=两个字符)

  • 符号"\d"表示匹配一个数字:“00\d”
    "007"√
    "00a"×
    "0077"×
    "006"√

  • 符号"\w"表示匹配一个字母、数字或者下划线:“Java\w”
    "Javac"√
    "Java3"√
    "Java_"√
    "Java&"×
    "Java23"×

  • 符号"\W"表示匹配一个非“字母、数字或者下划线”:“Java\W”
    "Javac"×
    "Java3"×
    "Java_"×
    "Java&"√
    "Java "√

  • 符号"\s"表示匹配一个空白字符,tab键也算空白字符:“A\sB”
    "A B"√(一个空格)
    "A B"√(一个tab)
    "AB"×(无空格)
    "A B"×(两个空格)

  • 符号"\S"表示匹配一个非空白字符,tab键也算空白字符:“A\SB”
    "A B"×(一个空格)
    "A B"×(一个tab)
    "A&B"√
    "AcB"√

  • 符号"\D"表示匹配一个非数字:“A\DB”
    "AaB"√
    "A#B"√
    "A1B"×
    "A2B"×

  • 符号"*"表示匹配任意个字符:“A\d*”
    "A0&fcs"√
    "A7343ds"√
    "Ad243d"×
    "A_eew2"×
    "A&sdvsg"×


2020-8-19 0:41

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值