正则表达式

正则表达式可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性;也可以在一段文本中查找满足要求的内容。

练习:

请编写正则表达式验证用户输入的手机号码是否满足要求。

请编写正则表达式验证用户输入的邮箱号是否满足要求。

请编写正则表达式验证用户输入的电话号码是否满足要求。
 

public class test {
		public static void main(String [] arg) {
			/*
			 * 验证手机号码  13112345678  13712345667  13945679027 139456790271
               验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434
               验证邮箱号码   3232323@qq.com  zhangsan@itcast.cnn d1ei0009@163.com dlei0009@pci.com.cn
			 */
			//手机号
			//第一位只能为1
			//第二位在3-9之间
			//第三位及后面数字任意,后面数字正好9次
			String regex1="1[3-9]\\d{9}";
			System.out.println("01569875614".matches(regex1));
			System.out.println("13112345678".matches(regex1));
			System.out.println("139456790271".matches(regex1));
			System.out.println("---------------------------");
			//座机号
			//区号:以0开头,从第二位是任意数字,可以出现2-3次
			//-:可以出现或不出现
			//号码:第一位不为零,长度5-10位
			String regex2="0\\d{2,3}-?[1-9]\\d{4,9}";
			System.out.println("020-2324242".matches(regex2));
			System.out.println("0201256842324242".matches(regex2));
			System.out.println("---------------------------");
			//邮箱号码
			//@左边:任意字符,至少出现一次
			//@
			//@右边:.的左边:任意字符取掉下划线,【2-6】
			//      .
			//      .的右边:大写字母,小写字母均可,2-3次
			String regex3="\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
			System.out.println("dlei0009@pci.com.cn".matches(regex3));
		}
}

请编写正则表达式验证用户名是否满足要求。
要求:大小写字母,数字,下划线一共4-16位
请编写正则表达式验证身份证号码是否满足要求。
简单要求: 18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x

复杂要求:按照身份证号码的格式严格要求。

public class test {
		public static void main(String [] arg) {
		String regex1="\\w{4,16}";
		System.out.println("uds1568".matches(regex1));
		System.out.println("lwx_15".matches(regex1));
		System.out.println("------");
		
		String regex2="[1-9]\\d{16}(\\d|x|X)";//简单身份证号
		System.out.println("023456789951264878".matches(regex2));
		System.out.println("12345678995126487x".matches(regex2));
		System.out.println("12345678995126487X".matches(regex2));
		System.out.println("------");
		
		//复杂身份证
		//第一位不能为0,后面五位任意数字
		//年份:前半段:18,19,20;后两位任意
		//月:01-09,11,12    (0[1-9]|1[12])
		//日:01-31          ( 0[1-9]|[12]\\d|3[01])
		//后三位任意,最后一位要么是数组要么是x或X
		String regex3="[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|11|12)(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|x|X)";
		System.out.println("12345120890515487X".matches(regex3));
		
		}
}

爬虫:在一段文本中查找满足要求的内容。

识别正则表达式的方法:replaceAll,split-——替换,分割

public class test {
		public static void main(String [] arg) {
		String s="张三1564李四48526王五448962";
		String regex="\\d+";
		String result=s.replaceAll(regex, "vs");
		System.out.println(result);
		
		String[] arr=s.split(regex);
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
		
		
		
		}
}

分组:就是小括号,以左括号为基准,最左边为第一组,依次为第二组...

捕获分组练习:

\\组号:把第X组的内容再用一次

判断一个字符串的开始部分和结束部分是否一致?

public class test {
		public static void main(String [] arg) {
		//需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
		//举例:abc123abc  b456b  123789123
          String regex="(.+).+\\1";
          //.表示任意字符
          //+表示一个或多个
          // \\组号:把第X组的内容再用一次
          System.out.println("abc123abc".matches(regex));
          System.out.println("abc123".matches(regex));
          System.out.println("-------");
        //需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
         //举例:aaa123aaa  bbb456bbb
          String regex1="((.)\\2\\2).+\\1";
          System.out.println("aaa123aaa".matches(regex1));
          System.out.println("aaa123aa".matches(regex1));
		
		}
}

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值