Java正则相关

字符类
[abc]a、b 或 c(简单类)
[^abc]任何字符,除了 a、b 或 c(否定)
[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]]a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]d、e 或 f(交集)
[a-z&&[^bc]]a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]]a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类
.任何字符(与行结束符可能匹配也可能不匹配)
\d数字:[0-9]
\D非数字: [^0-9]
\s空白字符:[ \t\n\x0B\f\r]
\S非空白字符:[^\s]
\w单词字符:[a-zA-Z_0-9]
\W非单词字符:[^\w]

 

边界匹配器
^行的开头
$行的结尾
\b单词边界
\B非单词边界
\A输入的开头
\G上一个匹配的结尾
\Z输入的结尾,仅用于最后的结束符(如果有的话)
\z输入的结尾
Greedy 数量词
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n
X{n,}X,至少 n
X{n,m}X,至少 n 次,但是不超过 m
Reluctant 数量词
X??X,一次或一次也没有
X*?X,零次或多次
X+?X,一次或多次
X{n}?X,恰好 n
X{n,}?X,至少 n
X{n,m}?X,至少 n 次,但是不超过 m
 
Possessive 数量词
X?+X,一次或一次也没有
X*+X,零次或多次
X++X,一次或多次
X{n}+X,恰好 n
X{n,}+X,至少 n
X{n,m}+X,至少 n 次,但是不超过 m
 
Logical 运算符
XYX 后跟 Y
X|YXY
(X)X,作为捕获组
 

 

 

1、手机号掩码

public static void main(String[] args) throws UnsupportedEncodingException {
		String str = "18633365556" ;
		System.out.println(encryptMobile(str));
	}
	public static String encryptMobile(String mobile) {
		String result = mobile ;
		Pattern p = Pattern.compile("^(\\d{3})(\\d*)(\\d{3})$") ;
		Matcher m = p.matcher(mobile);
		if(m.find() && m.groupCount() == 3) {
			result = m.group(1) + m.group(2).replaceAll("\\d", "*") + m.group(3) ;
		}
		return result ;
	}
输出:  186*****556

 

public static void main(String[] args) throws UnsupportedEncodingException {
		String str = "2502275525@qq.com" ;
		System.out.println(encryptMobile(str));
	}
	public static String encryptMobile(String mobile) {
		String result = mobile ;
		Pattern p = Pattern.compile("^(.{3})(.*)(.{2}@.*)$") ;
		Matcher m = p.matcher(mobile);
		if(m.find() && m.groupCount() == 3) {
			result = m.group(1) + m.group(2).replaceAll(".", "*") + m.group(3) ;
		}
		return result ;
	}


输出: 250*****25@qq.com
public static void main(String[] args) {
		
		Map<String,String> map = new HashMap<String,String>() ;
		map.put("memberId", "zhangsan") ;
		map.put("linkURL", "http://www.baidu.com") ;
		
		
		String str = "<p>\r\n" + 
				"	${memberId},您好!</p>\r\n" + 
				"<p>\r\n" + 
				"	请点击下面的链接完成支付密码的修改:</p>\r\n" + 
				"<p>\r\n" + 
				"	<a href=\"${linkURL}\" target=\"_blank\">${linkURL}</a></p>\r\n" + 
				"<p>\r\n" + 
				"	(如果链接无法直接点击,请复制上面的链接到您的浏览器地址栏打开)</p>\r\n" + 
				"" ;
		
		StringBuffer buf = new StringBuffer() ;
		Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}") ;
		Matcher matcher = pattern.matcher(str);
		while(matcher.find()) {
			String name = matcher.group(1);
			System.out.println(name);
			matcher.appendReplacement(buf, map.get(name)) ;
		}
		matcher.appendTail(buf) ;
		System.out.println("================");
		System.out.println(str);
		System.out.println("================");
		System.out.println(buf.toString());
		
		
	}
​​

 

 

 

 

 

 

后续添加内容。。。

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值