Java基础——正则表达式
一、什么是正则表达式
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Uinx中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex、复数有regexps、regexes、regexen。
* 代表多个
?代表一个字符(可以有,可以无)
--图书编号 要么是5个数字,要么是5个数字加上 - 4 个数字,比如 12345 或 12345-0001

var r =new RegExp("\\d{5}"); 如果用要匹配 \ 怎么办? 要使用 \\\\ (四个)
var r=/\d{5}/;
==RegExp 对象的方法
var setr="高睿说: 我我..下棋....很.很....厉害";
//第一次,去掉所有的.
str=str.replace(/\./g,"");
//第二次,去掉重复的字
str=str.replace(/(.)\1/g, "$1");
//结果 : 高睿说: 我下棋很厉害
== 定位符
1) ^ 规定匹配必须发生在目标字符串的开头部分上,必须出现在最前面才有用
例如 ^o 与 ok中的 o 匹配,但于 dog 中的 o 不匹配,,如果设置了RegExp对象实例的
MultiLine 属性, ^ 还会与首行匹配, 即与 \n 或 \r 之后的位置匹配
2) $ 匹配目标字符串的结尾位置,必须出现在最后才有定位符的作用
例如 o$ 与 hello 中的 o 匹配 ,但与 ok 中的 o不匹配
3) \b 匹配一个字(也就是一个单词) 的边界,它包含了字与空格间的位置以及目标字符串的开始和结束等位置
例如 "er\b" 匹配 never ok 中的er ,但不匹配 verx 中的er
"\bis\b" 匹配 this is anicecat isisisdog 中的 is
4) \B \b的逆运算 ,结果与上例相反
//例子
调用 replace(/win/g,"close") 来替换 win a window ,得到 close a closedow
调用 repalce(/\bwin\b,"close"/) 得到 close a window
//例子
如果想在一段文本的内容中的每行前面都加上同一个标记文本,只需使用这个标记文本对
^ 做全局替换即可
var str= "aaa\nbbb\nccc";
alert( str.replace(/^/mg,"#")); 这里的m 指的是多行的意思
结果:
#aaa
#bbb
#ccc
== 附
---- 原义字符
一些元字符不在再表示它原来的字面意义,如果要匹配它们的字面意义,必须使用
\ 转义
需要进行转义的字符 $ ( * . [ ? \ / ^ { |
---- 优先级顺序
* 比字符优先级高,比如 ab* 是 b 和 * 组合后,再和前面的 a组合
()比 *优先级高,(ab)* 是a和b组合后,再和* 组合,字符比 | 优先级高,
a|bc 是 bc组合后,再和 a 组合
一些正则表达式模式范例
匹配空行 /^\s*$/
匹配HTML标记 /<(\S+)(\s[^>]*)?>[\s\S]*<\/\1\s*>/
匹配email /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
匹配两个相同相邻的单词 /\b([a-z]+)\1\b/ //例如 CatCat
匹配 ip 地址 /^\d{1,2}|1\d\d|2[0-4]\d|25[0-5](\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/
\u4e00-\u9fa5 表示中文
四、java 中使用正则表达式验证
//例一 验证手号码
public static boolean checkPhone(String str){
boolean result=true; if(str.length()!=11){
result=false;
System.out.println("号码长度不正确");
}
if(!str.startsWith("1")){
result=false;
System.out.println("不是以1开头的");
} char [] arr=str.toCharArray();
for(int i=0;i<arr.length;i++){
if(!(arr[i]>='0'&&arr[i]<='9')){
result=false;
System.out.println("含有非法字符");
break;
}
}
return result;
}
//例二
public static boolean checkPhone2(String str){
boolean result=true;
try{
Long.parseLong(str);
}
catch(Exception ex){
System.out.println("手机号格式不正确");
result=false;
}
return result;
}
// 例三
public static boolean checkPhone3(String str){
String regex="1[3584]\\d{9}";
return str.matches(regex);
}
//例四 使用正则表达式进行切割
public static void splitDemo1(){
String str="aaa---bbb-------ccc----ddd";
String [] strList=str.split("-+");
System.out.println(strList.length);
for(String s:strList){
System.out.println(s);
}
}
//例五
public static void splitDemo2(){
String str="aaa.bbb.ccc.ddd";
String [] strList=str.split("\\.");
System.out.println(strList.length);
for(String s:strList){
System.out.println(s);
}
}
//例六
public static void splitDemo3(){
String str="c:\\windows\\system32\\aa.bmp";
String [] strList=str.split("\\\\");
System.out.println(strList.length);
for(String s:strList){
System.out.println(s);
}
}
//例七 替换
public static void replaceDemo(){
String str="要1234想办456假证,请联系13503688749或13302564798 或者是 15050020120 或者 257";
String regex="\\d{11}";
System.out.println(str.replaceAll(regex, "混球"));
}
//例八 获取
public static void getDemo(){
String str="林花谢了春红大葱葱,太匆匆,好大大葱大葱葱大葱葱葱";
String regex="大葱葱+"; Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(str); while(matcher.find()){
System.out.println(matcher.group());
}
}
//例九 从网页上获取
public static void webGetDemo()throws Exception {
URL url=new URL("http://localhost:8080/book-shop/login.jsp");
URLConnection conn=url.openConnection(); BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); String regex="[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+";
Pattern pattern =Pattern.compile(regex); String str=null;
while((str=br.readLine())!=null){
Matcher matcher=pattern.matcher(str);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
Java基础——正则表达式的更多相关文章
- Java基础-正则表达式(Regular Expression)语法规则简介
Java基础-正则表达式(Regular Expression)语法规则简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正则表达式的概念 正则表达式(Regular Exp ...
- JAVA基础--正则表达式
. any character \d A digit 0-9 \D a non-digit [^0-9] \s a whitespace character, 空白字符 \S a non-w ...
- Java基础--正则表达式的规则
注意:正则表达式只关注格式是否正确,不关注内容是否有效. 一.字符集合, []表示一个字符. 1.[abc] :指a,b,c中的任意一个字符. 2.[^abc]:指除了a,b,c外的任意字符. 3.[ ...
- 二十八、Java基础--------正则表达式
在对字符串进行处理时一方面可以利用String对象的一些处理方法另一方面可以利用正则表达式,但是一般情况下用String对象方法进行处理起来会相对麻烦一些而正则表达式可以很方便的解决问题.为了更好的学 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- 黑马程序员:Java基础总结----正则表达式
黑马程序员:Java基础总结 正则表达式 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import java.util.regex.*; 符合一定规 ...
- Java基础七-正则表达式
Java基础七-正则表达式 一.定义: 特定的符号的组合 二.作用: 用于操作字符串数据 三.优缺点 简化代码,但是阅读性差 四.引入 4.1 问题 判断一个号码是否是QQ号? 不是零开头 6-15位 ...
- Java基础学习总结(35)——Java正则表达式详解
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu ...
- Java基础 -- 字符串(格式化输出、正则表达式)
一 字符串 1.不可变String String对象是不可变的,查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以包含修改后 ...
随机推荐
- Alpha 冲刺(1)
Alpha 冲刺 (1/10) Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 ...
- 基于esp32的IIC通讯
本文源码地址在:http://download.csdn.net/download/noticeable/9962029 IIC 通讯应该是当代比较常用的几种通讯方式之一,其无需特殊的IO接口,连线方 ...
- 【WPF】【UWP】借鉴 asp.net core 管道处理模型打造图片缓存控件 ImageEx
在 Web 开发中,img 标签用来呈现图片,而且一般来说,浏览器是会对这些图片进行缓存的. 比如访问百度,我们可以发现,图片.脚本这种都是从缓存(内存缓存/磁盘缓存)中加载的,而不是再去访问一次百度 ...
- ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)
ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...
- [UWP]不那么好用的ContentDialog
ContentDialog是UWP开发中最常用的组件之一,一个体验良好的UWP应用很难避免不去使用它.博客园里也有许多的文章介绍如何来利用ContentDialog实现各种自定义样式的弹窗界面.不过实 ...
- js内存空间的那点事
由于js具有自动垃圾回收机制,导致接触js后一直没去关注js的内存分配及变量回收等原理,只是懵懂的了解用变量标记法(null)可以手动的去清除或是回收:是时候弥补这个大坑了... 垃圾回收两种方法 一 ...
- Eclipse 工作空间的相关说明
工作空间文件说明 当eclipse选定一个文件夹作为workspace工作空间时,就会在该目录中生成一些文件. 共三个文件夹:.metadata ..recommenders .RemoteSyste ...
- Struts2 项目 Action 查询结果异常 org.apache.struts2.json.JSONException
问题描述 今天进行一个订单管理模块的开发时遇到一个问题:查询的订单时有时会报这个异常: org.apache.struts2.json.JSONException: java.lang.Illegal ...
- JavaScript获取键盘事件
JavaScript中: onkeydown 事件会在用户按下一个键盘按键时发生. onkeypress 事件会在键盘按键被按下并释放一个键时发生. onkeyup 事件会在键盘按键被松开时发生. 支 ...
- MySQL:explain 和 慢查询日志
1. 执行SQL时显示执行情况 explain + SQL语句 2. 强制使用索引 select * from t force index (a) where a between 1 ...