Java Web进阶(3) -- Java正则表达式

第1章 正则表达式基础语法

1-1 正则表达式的介绍
什么是正规则表达式
◆ 正则表达式是检查,匹配字符串的表达式
◆ 正则表达式是描述规则,主流语言都有良好的支持
◆ 字符串校验,查找与替换是正则表达式主要使用场景

正则表达式测试工具.

1-2 字符范围匹配
在这里插入图片描述
示例:
精准匹配字符串“hallo”或者“hello”;正则:h[ae]llo
匹配数字范围(0570-0579);正则:057[0-9]
单选题只允许输入ABCD其中一项;正则:[A-B]

1-3 元字符
在这里插入图片描述
示例:
匹配数字(3213.383219);正则:\d\d\d\d.\d\d\d\d\d\d
匹配杭州与宁波座机号码(0571|0574-XXXXXXXX);正则:057[14]-\d\d\d\d\d\d\d\d
匹配18位身份证号;正则:[1234568]\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d[0-9xX]

1-4 多次重复匹配
在这里插入图片描述
示例:
验证短信验证码(6位数字);正则:\d{6}
匹配全国座机号(区号3或4位-电话号码7或8位);正则:\d{3,4}-\d{7,8}
匹配英文姓名(例如:James Watson);正则:[A-Z][a-z]+\s[A-Z][a-z]*

1-5 定位匹配
在这里插入图片描述
示例:
abb123123ab;正则:^ab.*ab$

1-6 贪婪模式与非贪婪模式
贪婪模式
◆ 在满足条件的情况下尽可能多匹配字符串
◆ 示例:111222333 正则:\d{6,8}
◆ 匹配结果:11122233

非贪婪模式
◆ 在满足条件的情况下尽可能少匹配字符串
◆ 示例:111222333 正则:\d{6,8}?
◆ 匹配结果:111222

示例:
<a href="www.baidu.com">百度</a><a href="www.sina.com">新浪</a>
正则:"*";匹配:"www.baidu.com">百度</a><a href="www.sina.com"
正则:".*?";匹配:"www.baidu.com""www.sina.com"

1-6 表达式分组
◆ 分组将“正则”分组为多个子表达式
◆ 示例:abababcdcdcd
◆ 正则b表达式:(ab){3}(cd){3}

示例:
匹配验证码(4或6位字);正则:(^\d{4}$)|(^\d{6}$)
匹配车牌号(冀A-U888G);正则:^([冀黑粤晋][A-Z])-([A-Z0-9]{5})$
匹配中文或英文姓名(例如:张三或James Watson);正则:(^[\u4e00-\u9fa5]{2,8}$)|^[A-Z][a-z]+\s[A-Z][a-z]*$

第2章 正则表达式应用

2-1 JavaScript表单验证
html代码:

<body>
	<form action="#" method="post" id="frmInfo">
		<div id="err" style="color:red">
			
		</div>
		<div>
			姓名:<input id="name" name="name"/>
		</div>
		<div>
			身份证:<input id="idno" name="idno"/>
		</div>
		<div>
			<input type="submit" />
		</div>
	</form>
	<script type="text/javascript">
		document.getElementById("frmInfo").onsubmit = function(){
			//在JS中定义正则表达式对象只需要在 /正则表达式/
			//验证姓名
			var regex1 = /^[\u4e00-\u9fa5]{2,8}$/;
			//验证身份证
			var regex2 = /^[1234568]\d{16}[0-9xX]$/;
			var name = document.getElementById("name").value;
			var idno = document.getElementById("idno").value;
			if(regex1.test(name) == false){//利用正则校验数据,true代表匹配,false代表不匹配
				document.getElementById("err").innerHTML = "无效姓名";
				return false;
			}else if(regex2.test(idno) == false){
				document.getElementById("err").innerHTML = "无效身份证号";
				return false;
			}else{
				alert("验证通过,准备提交")
				return true;
			}
			
		}
	</script>
</body>

2-2 Java中Web页面信息提取
html

<body>
	<h1>国际主要城市</h1>
	<ul>
		<li>纽约NewYork</li>
		<li>伦敦London</li>
		<li>东京Tokyo</li>
		<li>巴黎Paris</li>
		<li>香港HongKong</li>
		<li>休斯顿Houston</li>
		<li>广州Guangzhou</li>
		<li>里约热内卢RioDEJaneiro</li>
		<li>巴拿马城Panamacity</li>
		<li>金奈Chennai</li>
	</ul>
</body>

class

package com.imooc.regex;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexSample {
	public static void main(String[] args) {
		StringBuilder content = new StringBuilder();
		try {
			FileInputStream fis = new FileInputStream("D:/workspace/regex/WebContent/sample.html");//二进制流
			InputStreamReader isr = new InputStreamReader(fis,"UTF-8");//二进制流转为字符串流
			BufferedReader bufferedReader = new BufferedReader(isr);
			String lineText = "";
			while((lineText = bufferedReader.readLine()) != null) {
//				System.out.println(lineText);
				content.append(lineText + "\n");
			}
			bufferedReader.close();
			System.out.println(content);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//1.创建正则表达式对象
		Pattern p = Pattern.compile("<li>([\\u4e00-\\u9fa5]{2,10})([a-zA-Z]+)</li>");//按“(”,“)”分组
		//2.匹配正则表达式
		Matcher m = p.matcher(content);
		//3.查找匹配的结果
		while(m.find()) {
//			System.out.println(m.group(0));//group中,0表示完整的字符串, 1表示第一个分组,2表示第二个分组
			String chs = m.group(1);
			String eng = m.group(2);
			System.out.println(chs + "-" + eng);
		}
	}
}

笔记跟源码来源:慕课网,Java实战课程 链接: 慕课网.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值