正则表达式Regix

三、正则表达式

  • 正则表达式语法——正则表达式是业界通用的文本处理表达式

1.什么是正则表达式?

 - 正则表达式是检查、匹配字符串的表达式
 -  正则表达式是描述规则,主流语言都有良好支持
 -  字符串校验、查找与替换是正则表达式主要使用场景
  • 常用正则表达式——通过常用正则表达式巩固语法规则
    下面给出一个正则表达式的案例:
    1.检查输入的身份证是否合法:
    示例: 13010220200328091x
    正则表达式:(\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$)
    2.字符范围匹配:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

贪婪模式与非贪婪模式

贪婪模式就是京可能的匹配最多的字符,
非贪婪模式就是尽可能少的匹配满足正则表达式的字符串。
例如:当使用贪婪模式时:
在这里插入图片描述
而使用非贪婪模式时:
在这里插入图片描述

表达式分组:

正则表达式可以用()分组为多个子表达式。
在这里插入图片描述

  • 编程使用正则表达式——讲解如何在Java和JS中使用正则表达式.

在JS中使用正则表达式过滤

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="#" method ="post" id="frmInfo">
	<div id="err",style="color:red">
	</div>
	<div>
	姓名:<input id="name",name ="name"/>
	身份证:<input id="idno",name ="idno"/>
	<input type="submit"/>
	</div>
</form>
<script type="text/javascript">
document.getElementById("frmInfo").onsubmit = function(){
	var regix1= /^[\u4e00-\u9fa5]{2,8}$/
	var regix2= /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
	if(regix1.test(document.getElementById("name").value)==false){
		document.getElementById("err").innerHTML ="无效姓名";
		return false;
	}else if(regix2.test(document.getElementById("idno").value)==false){
		document.getElementById("err").innerHTML ="无效身份证";
		return false;
	}
	return true;
}
</script>
</body>
</html>

效果:
在这里插入图片描述

java页面中信息获取

通过正则表达式从页面中提取信息;
处理代码:

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));
			String chs = m.group(1);
			String eng = m.group(2);
			System.out.println(chs + "-" + eng);
		}
	}
}

<!DOCTYPEhtml>
<html>
<head>
<meta charset="UTF-8">
<title>国际主要城市</title>
</head>
<body>
	<h1>国际主要城市</h1>
	<ul>
		<li>纽约NewYork</li>
		<li>伦敦London</li>
		<li>东京Tokyo</li>
		<li>巴黎Paris</li>
		<li>香港HongKong</li>
		<li>新加坡Singapore</li>
		<li>悉尼Sydney</li>
		<li>米兰Milano</li>
		<li>上海Shanghai</li>
		<li>北京Beijing</li>
		<li>马德里Madrid</li>
		<li>莫斯科Moscow</li>
		<li>首尔Seoul</li>
		<li>曼谷Bangkok</li>
		<li>多伦多Toronto</li>
		<li>布鲁塞尔Brussels</li>
		<li>芝加哥Chicago</li>
		<li>吉隆坡KualaLumpur</li>
		<li>孟买Mumbai</li>
		<li>华沙Warsaw</li>
		<li>圣保罗SaoPaulo</li>
		<li>苏黎世Zurich</li>
		<li>阿姆斯特丹Amsterdam</li>
		<li>墨西哥城MexicoCity</li>
		<li>雅加达Jakarta</li>
		<li>都柏林Dublin</li>
		<li>曼谷Bangkok</li>
		<li>台北Taipei</li>
		<li>伊斯坦布尔Istanbul</li>
		<li>里斯本Lisbon</li>
		<li>罗马Rome</li>
		<li>法兰克福Frankfurt</li>
		<li>斯德哥尔摩Stockholm</li>
		<li>布拉格Prague</li>
		<li>维也纳Vienna</li>
		<li>布达佩斯Budapest</li>
		<li>雅典Athens</li>
		<li>加拉加斯Caracas</li>
		<li>洛杉矶LosAngeles</li>
		<li>新西兰NewZealand</li>
		<li>圣地亚哥SanDiego</li>
		<li>布宜诺斯艾利斯BuenosAires</li>
		<li>华盛顿Washington</li>
		<li>墨尔本Melbourne</li>
		<li>约翰内斯堡Johannesburg</li>
		<li>亚特兰大Atlanta</li>
		<li>巴塞罗那Barcelona</li>
		<li>旧金山SanFrancisco</li>
		<li>马尼拉Manila</li>
		<li>波哥大Bogota</li>
		<li>特拉维夫TelAviv-Yafo</li>
		<li>新德里NewDelhi</li>
		<li>迪拜Dubai</li>
		<li>布加勒斯特Bucharest</li>
		<li>奥斯陆Oslo</li>
		<li>柏林Berlin</li>
		<li>赫尔辛基Helsinki</li>
		<li>日内瓦Geneva</li>
		<li>利雅得Riyadh</li>
		<li>哥本哈根Copenhagen</li>
		<li>汉堡Hamburg</li>
		<li>开罗Cairo</li>
		<li>卢森堡Luxembourg</li>
		<li>班加罗尔Bangalore</li>
		<li>达拉斯Dallas</li>
		<li>科威特城Kuwaitcity</li>
		<li>波士顿Boston</li>
		<li>慕尼黑Munich</li>
		<li>迈阿密Miami</li>
		<li>利马Lima</li>
		<li>基辅Kiev</li>
		<li>休斯顿Houston</li>
		<li>广州Guangzhou</li>
		<li>贝鲁特Beirut</li>
		<li>卡拉奇Karachi</li>
		<li>索菲亚Sophia</li>
		<li>蒙得维的亚Montevideo</li>
		<li>里约热内卢RioDEJaneiro</li>
		<li>胡志明市HoChiMinhCity</li>
		<li>蒙特利尔Montreal</li>
		<li>内罗毕Nairobi</li>
		<li>巴拿马城Panamacity</li>
		<li>金奈Chennai</li>
		<li>布里斯班Brisbane</li>
		<li>卡萨布兰卡Casablanca</li>
		<li>丹佛Denver</li>
		<li>基多Quito</li>
		<li>斯图加特Stuttgart</li>
		<li>温哥华Vancouver</li>
		<li>麦纳麦MaiNaMai</li>
		<li>危地马拉市Guatemalacity</li>
		<li>开普敦CapeTown</li>
		<li>圣何塞SanJose</li>
		<li>西雅图Seattle</li>
		<li>深圳Shenzhen</li>
		<li>珀斯Perth</li>
		<li>加尔各答Calcutta</li>
		<li>安特卫普Antwerp</li>
		<li>费城Philadelphia</li>
		<li>鹿特丹Rotterdam</li>
		<li>拉各斯Lagos</li>
		<li>波特兰Portland</li>
		<li>底特律Detroit</li>
		<li>曼彻斯特Manchester</li>
		<li>惠灵顿Wellington</li>
		<li>里加Riga</li>
		<li>爱丁堡Edinburgh</li>
		<li>圣彼得堡StPetersburg</li>
		<li>圣迭戈SanDiego</li>
		<li>伊斯兰堡Islamabad</li>
		<li>伯明翰Birmingham</li>
		<li>多哈Doha</li>
		<li>阿拉木图AlmaAtaAlmaty</li>
		<li>卡尔加里Calgary</li>
	</ul>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知虚

权当做笔记,打赏随您心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值