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对象,以包含修改后 ...
随机推荐
- Azkaban使用安装文档
Azkaban使用安装文档 Azkaban简介 Azkaban的是什么 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Az ...
- javascript(作业九)
1.javascript简介: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端 ...
- centos下安装nethogs
wget https://github.com/raboof/nethogs/archive/v0.8.1.tar.gzyum install libpcap-develtar zxvf v0.8.1 ...
- ReactNative学习笔记(二)基础进阶
一个最简单的HelloWorld页面 先不多解释,直接上代码: import React, { Component } from 'react'; import {AppRegistry, Style ...
- nodejs从http升级到https(阿里云证书的使用)
升级原因 1.各大搜索引擎中,https的网页的权重比一般的http的网页权重要高. 2.从用户体验的角度,一个老是被浏览器提醒该网页不可信的网页,总不会让用户感到安心 所以将网站从http升级为ht ...
- Eclipse 中 Java 代码报版本错误的问题
今天碰到了eclipse中的代码一直报错,后来发现是编译环境的问题,记录一下. 项目build path的JDK版本是开发的时候编译器需要使用到的,例如,如果用的JDK1.4就不能使用泛型. 而jav ...
- opus在arm的嵌入式平台上的移植和开发
最近产品中要用到opus,圣上一声令下,把opus移植到我们平台上,什么?opus?opus是什么?在一脸 茫然中,我这特种兵码农就赤手空拳上战场了. 废话少说,赶紧在网站:https://opus- ...
- Linux - 在当前系统内查找信息的方法
查找文本 使用grep命令 grep命令 - 示例 grep命令 - 正则表达式 grep命令 - 统计匹配字符串的行数 grep命令 - 搜索多个单词 结合正则表达式使用grep命令 注意:在搜索指 ...
- postgresql-分页重复数据探索
# postgresql-分页重复数据探索 ## 问题背景 许多开发和测试人员都可能遇到过列表的数据翻下一页的时候显示了上一页的数据,也就是翻页会有重复的数据. ### 如何处理? 这个问题出现的原因 ...
- java使用document解析xml文件
准备工作: 1创建java工程 2创建xml文档. 完成后看下面代码: import org.w3c.dom.*; import javax.xml.parsers.DocumentBuilder; ...