Java 实际应用中常用的正则表达式

package com.test.f;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class testReg {
public static void main(String[] args) {
/**
 * 1.正则表达式
	 a.jdk1.4 开始提供了正则表达式的支持;
	 b.java.util.regex
	 c.Pattern类:此类对象如果想要获得必须使用compile(),	此方法的功能是编译正则
	 d.Matcher类:通过Patern类取得;
	 
   2.正则标记
	 a.所有的正则可以使用的标记都在java.util.regex.Pattern类里面定义了;
	 b. 单个字符 (数量:1)
	    字符:表示由一位字符所组成;
	    \\  : 转义字符
	    \t  :表示一个'\t'的符号;
	    \n  :匹配换行(\n) 符号;
	
   3.字符集(数量:1)
	  [abc] :表示可能是字符a,b,c中的任意一位
	  [^abc]:表示不是a,b,c中的任意一位
	  [a-z]:所有的小写字母
	  [a-zA-Z]:所有的字母
	  [0-9]   :任意的一位数字
	  
   4.简化的字符集表达式(数量:1)
	  .  :表示任意一个字符
	  \d :等价于[0-9]
	  \D :非0-9的字符
	   \s :表示任意的空白字符 如'\t','\n'
	   \S :表示任意的非空白字符;
	   \w :等价于[a-zA-Z0-9_] 表示由任意的字母,数字,-,下划线组成
	   \W :表示[^a-zA-Z0-9_]  表示由非字母,数字,-,下划线组成
	
	5.边界匹配(不要在java中使用,在javaScript中使用)
	   ^:正则开始
	   $:正则结束
	
	6.数量表达式
	    正则?:表示此正则可以出现0次或1次
	    正则+:表示此正则可以出现1次或1次以上;
	          正则{n}:表示此正则可以出现n次
	    正则{n,}:表示此正则出现n次以上(包含n次)
	    正则{n,m}:表示此正则出现n次到m次
	
	7.正则1正则2 :正则1判断完成后继续判断正则2
	  正则1|正则2 :正则1或正则2有一种满足则可
	  (正则) 将多个正则作为一组,可以为这一组单独设置出先的次数
	
	8. String类对正则的支持
	   jdk1.4 引入了正则的支持,Stirng类也添加了相应的支持
	   matches(String regex) 正则验证,使用指定的字符串判断其是否满足给定的正则表达式的结构;
	   replaceAll(String regx,String replacement)全部替换
	   replaceFirst(String regx,String replacement)替换首个
	   split(String regex)全部拆分;
	   split(String regex,int limit) 部分拆分;

 **/
	
	/**
	 * 1.将所有的非小写字母替换为"";
	 */
		String str="88drrrrr*RRE*&(33lslfWWWWabckdd";
		String pattern="[^a-z]";
		String replaceAll = str.replaceAll(pattern, "");
		System.out.println(replaceAll);//drrrrrlslfabckdd

	/**
	 * 2.根据数字拆分字母
	 */
		
		String str1="aaa55bb8888cc444444uuuuu55555uuKKKK";
		String pattern1="\\d+";
		String[] split = str1.split(pattern1);
		for (String string : split) {
			System.out.println(string);
		}

	/**
	 * 3.验证一个字符串是否式数字,如果是转为double
	 */		
		String 	str3="1";
		String pattern3="\\d+(\\.\\d+)?";
		System.out.println(str3.matches(pattern3));
	
	/**
	 * 4.判断给定的字符串是不是一个ip地址 192.168.1.1 每一段最大长度是3
	 * 
	 */		
		String str4="192.168.1.1";
		String pattern4= "(\\d{1,3}\\.){3}\\d{1,3}";
		System.out.println(str4.matches(pattern4));
		
	/**
	 * 5.email校验
	 */

		//email
		/* 用户名由字母、数字、字母、下划线、点组成
		 用户名 必须以字母开头 可以以数字和字母结尾
		 长度不能超过30位
		 最后的根域名只能是.com ,.cn ,.net,.com.cn,.edu,.gov,.org*/
		String email="wwangtaoc.11@163.com";
		//开头[a-zA-Z]
		//中间段[a-zA-Z0-9_\\.]{0,28}
		//结尾[a-zA-Z0-9]
		//@
		//紧跟@后面的 \\w+
		// \\.
		//(net|cn|com|com\\.cn|net\\.cn|edu|gov|org)
		String pattern_email="[a-zA-Z][a-zA-Z0-9_\\.]{0,28}[a-zA-Z0-9]@\\w+\\.(net|cn|com|com\\.cn|net\\.cn|edu|gov|org)";
		System.out.println(email.matches(email));
	    
		
	/**
	  * 
	  * 6.字符串拆分
	 */
		
		String str_split="aa3333bb333cc33dd3";
		String reg="\\d+";
		Pattern compile = Pattern.compile(reg);
		String[] split2 = compile.split(str_split);
		System.out.println(Arrays.toString(split2));
		
	/**
	 * 7.字符串校验
	 * String类本身支持了这两种操作,所有对String而言很少再去利用Pattern和Matcher类这两个类进行操作;
	       可以实现代码的最小化
	 */		
		String str6="323237";
		String reg6="\\d+";
		Pattern p = Pattern.compile(reg6);//编译正则
		Matcher matcher = p.matcher(str6);//进行正则匹配
		boolean matches = matcher.matches();
		System.out.println(matches);//匹配的结果
		
		
	/**
	 * 8. java中'\'本身具有转义意义;如果要输出'\' 需要使用'\\'; System.out.println("a\nb\\");    
	            .(点)匹配除"\r\n"之外的任何单个字符;
	
	 */
		 String input1="hello ";
		 String p1="hello.";//.匹配任何一个字符  (hello后必须有一位)
		 System.out.println(Pattern.matches(p1, input1));
		
    /**
     * 9.手机号码
     *   1.第一位是1,第二位是3,4,5,7,8,第三位则是0-9,第三位之后则是数字0-9;
     *   2.x|y 匹配x或y;
     *   3.()圆括号表示分为一组;
     *   4.{}花括号表示出现的次数 ; +表示一个或多个; *表示零个或多个;?表示零个或一个;
     *   5.{n} 表示匹配n次;{n,}至少匹配n次;{m,n}匹配至少m次,最多n次;
     *   6.\\d数字字符匹配。等效于 [0-9];
     *   7.'\\' 在java中'\'本身具有转义意义;如果要输出'\' 需要使用'\\';
     *   8.'^'配输入字符串开始的位置;
     */
		
		 String input2="q1767319565";
		 String pattern2="1(3|4|5|7|8)\\d{9}";	
		 boolean matches2 = Pattern.matches(pattern2, input2);
		 System.out.println("手机号码:"+matches2);
		 
	/**
	 * 10.email
	 *  1.26个大小写英文字母表示为a-zA-Z
	 *  2.数字表示为0-9
	 *  3.下划线表示为_
	 *  4.中划线表示为-
	 *  5.由于名称是由若干个字母、数字、下划线和中划线组成,所以需要用到+表示多次出现
	 *  6.[] 字符组/字符集
	 *  7.\\. 匹配点
	 */
		 String input3="www@qq.com";
		 String p3="[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+";
		 System.out.println(Pattern.matches(p3, input3));
		 
	/**
	 * 11.两位正整数
	 * 
	 */
		 String input4="q1";
		 String p4="\\d{2}$"; //javaScript:var p=/^\d{1,2}$/
		 System.out.println("两位正整数:"+Pattern.matches(p4, input4));
		 
	/**
	 * 12.数字 :大于等于0的数(整数和小数(保留两位))
	 */
		 String pattern5="\\d+(\\.\\d{2}+)?";//javaScript: var p=/^\d+(\.\d{2}+)?$/;
		 String input5="1.44";
		 System.out.println("大于等于0的数(整数和小数(保留两位)): "+Pattern.matches(pattern5, input5));
	
	/**
	 * 13.数字(整数、负数、小数(保留两位小数))
	 */
		 String input6="-10.98";
		 String pattern6="(\\-|\\+)?\\d+(\\.\\d{2}+)?";//javaScript:var pattern6="/^(\-|\+)?\\d+(\.\d{2}+)?$/"
		 System.out.println("数字(整数、负数、小数(保留两位小数)): "+Pattern.matches(pattern6, input6));
	/**
	 * 14.数字1-99之间的包含1和99的数
	 * 
	 */
		 String input7="99";
		 String pattern7="[1-9][0-9]?";//javaScript: var pattern7="/^[1-9][0-9]?$/";
		 System.out.println(Pattern.matches(pattern7, input7));
		
}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值