正则

1.基本正则标记

package com.wjx.sayHello;

public class RegexTestDemo {

	public static void main(String[] args) {
		/* 1.描述单个字符 
		 * x:表示单个字符x	
		 * \\:匹配“\”
		 * \t :描述制表符
		 *  \n:表示换行
		 * */
		System.out.println("a".matches("a"));
		System.out.println("\\".matches("\\\\"));
		
		/* 2.描述一个范围  */
		// [abc] : 表示字母abc中的任意一个
		// [^abc] : 表示字母abc中的任意一个
		// [0-9] : 表示'0'~'9'由数字组成,即字符是0~9的数字组成的 
		// [a-zA-Z] : 表示不区分大小写a~z
		System.out.println("a".matches("[abc]"));
		System.out.println("x".matches("[^abc]"));
		System.out.println("1".matches("[0-9]"));
		System.out.println("V".matches("[a-zA-Z]"));
		/* 3.单个简化表达式 
		 * "." 表示任意一个字符
		 * \d  等价与[0-9]
		 * \D  等价与[a-zA-Z]
		 * \s  表示一位空格,可能是空格、\t,\n
		 * \S  表示不是一位空格
		 * \w  等价于字符数字下划线  [a-zA-Z0-9_]
		 * \W  等价于不是字符数字下划线  [^a-zA-Z0-9_]
		 * 
		 */
		System.out.println("a".matches("."));
		System.out.println("1".matches("\\d"));
		System.out.println("D".matches("\\D"));
		System.out.println("\t".matches("\\s"));
		System.out.println("_".matches("[a-zA-Z0-9_]"));
		/* 4.边界匹配(Java 用不到,在js使用) */
		// ^ :表示正则的开始
		// $ :表示正则的结束
		
		/* 5.数量表达式,需要重复出现N次
		 * 	? :出现0次或者一次
		 * 	+ :出现一次或者多次
		 * 	* :出现0次,1次或者多次
		 * {n}:出现n次
		 * {n,}:出现大于等于n次
		 * {n,m}:出现大于等于n,小于等于 m次
		 *  */
		System.out.println("".matches("[a-z]?"));
		System.out.println("asa".matches("[a-z]+"));
		System.out.println("".matches("[a-z]*"));
		System.out.println("12312".matches("[0-9]{5}"));
		System.out.println("1231223".matches("[0-9]{5,}"));
		System.out.println("1231223".matches("[0-9]{5,10}"));
		
		/* 5.数量表达式,需要重复出现N次
		 * 正则A正则B:表示与的关系,第一个匹配之后立即匹配第二个
		 * 正则A|正则B:表示正则A或者正则B出现一次
		 * (正则):按照一组正则进行处理
		 * */

	}

}

2.String对正则的支持

package com.wjx.sayHello;


import java.text.SimpleDateFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringRegexTestDemo {

	public static void main(String[] args) throws Exception {
		//提取字符串中所有字母(将字符串所有非字母用空代替)
		String str="DSNI212312ss312feq23";
		String regex="[^a-zA-Z]";
		System.out.println(str.replaceAll(regex, ""));
		// 字符串拆分
		String regex1="\\d+";//[0-9]
		String str1="a1b22c333d4444e555555fqweqw312dse12e";
		String  result[]=str1.split(regex1);
		for(int x=0;x<result.length;x++){
			System.out.print(result[x]+"、");
		}
		System.out.println();
		//字符验证
		//1.验证一个字符串是否为数字,如果是数字,全部double输出
		
		String str2="12311.1213";
		String regex2="\\d+(\\.\\d+)?";//验证是否为数字,可以为小数可以不为小数
		if(str2.matches(regex2)){
			double data=Double.parseDouble(str2);
			System.out.println(data);
		}else
			System.out.println("输入数字中包含非数字字符");
		
		//2.要求验证一个字符串是否为日期或者日期时间,如果是则将其变为Date类型
		 String str3 = "2016-01-03 02:03:11";
		 String regex3="\\d{4}-\\d{2}-\\d{2}";
		 if(str3.matches(regex3)){
			 System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str3));
		 }else if(str3.matches("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}")){
			 System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(str3));
		 }
		 
		 //3.现在要求判断给定的电话号码是否正确(用一个正则表示)
		 //电话格式一:51283382
		 //电话格式二:01051283382
		 //电话格式一: (010)-51283382 
		 
		 String str4="(0513)-51235567";
		 String regex4="((\\(\\d{3,4}\\)-)|(\\d{3,4}))?\\d{7,8}";// 自己组合吧
		 if(str4.matches(regex4)){
			 System.out.println("号码正确");
		 }else
			 System.out.println("号码不符合");
		 
		 //4.验证emali地址
		 
		 String str5="Lw88java.v_-ww@njmind-java.com";
		 String regex5="[a-zA-Z][a-zA-Z_\\-\\.0-9]{4,14}@[a-zA-Z_\\-\\.0-9]+\\.(cn|com|net)";
		 if(str5.matches(regex5)){
			 System.out.println("邮箱正确");
		 }else
			 System.out.println("邮箱不正确");
		 
		 // java.util.regex.Pattern包
		  String str6="a|B|c";
		  String regex6="\\|";
		  Pattern pat=Pattern.compile(regex6);
		  String result6[]=pat.split(str6);
		  for(int i=0;i<result6.length;i++){
			  System.out.println(result[i]);
		  }
		  //java.util.regex.Matcher 负责分组的时候需要使用
		  String str7="INSERT INTO member(name,age,sex) values(#{member.name},#{member.age},#{meeber.sex})";
		  String regex7="#\\{[a-zA-Z_0-9\\.]+\\}";
		  Pattern pat7=Pattern.compile(regex7);
		  Matcher mat=pat7.matcher(str7);
		  while(mat.find()){
			  System.out.println(mat.group(0));
		  }
		  
		  
		  

	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值