JAVA正则表达式小总结

最近项目中正在做后台校验,而后台校验也基本都是使用正则表达式校验,本文做一些粗略的总结。

1、字符串长度:.{1,10},注意有一个点在{}前,表示匹配所有。‘{}’之前一定是一个捕获组,因此如果有其他筛选要求并且限制长度则为在总捕获组的最后加上{}来限制长度。

2、如何表示不为abcd的任意一个字符:([^abcd])*,使用^表示在[]不为[]内的任意字符;注意,常有人写成([^a|b|c|d])*,[]里边的|不代表或者的意思,这里指表示|这个字符本省。

3、如何表示字符串中不含有adc或def等字符串:((?!adc)(?!def).)* ,其中adc为且的关系;这里有个小圆点的原因是:写正则表达式需要记住的一个重要原则就是正则表达式都是基于位校验的,因此如果此处我们没有小圆点来匹配位,这个正则表达式就是错误的。

4、如何表示多个限制条件:即多个限制条件且,使用多个捕获组相连接即可,即使用多个()相连。如:如何保证字符串中不存在adc、def且不存在双引号、单引号、斜杠、尖括号等,且长度保证在40位以内:((?!adc)(?!def)([^\"‘\\<])){0,40},就像之前说的{}之前需要一个大的括号来作为一个最终捕获组;

5、如何匹配包含换行符等在内的特殊字符的所有字符:我之前写的是这样的:(.|//s){1,2000},但是有一天测试居然告诉我当他真的用2000个字符来验证的时候,这个直接导致程序异常了,经过多方验证原来这是jdk的一个bug,于是只能改用([//s//S]){1,2000},这里使用一个小技巧,表示所有字符时用//s和//S代替,因为//s代表所有换行符 空格符等字符,而//S恰好有表示非换行符等,正好是一个互补关系。

时间: 2024-10-25 08:06:18

JAVA正则表达式小总结的相关文章

java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)

import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; class MyComparator implements Comparator<String>{ public int compare(String ip1, String ip2) { Pattern p

福利贴——爬取美女图片的Java爬虫小程序代码

自己做的一个Java爬虫小程序 废话不多说,先上图. 文件夹命名是用标签缩写,如果大家看得不顺眼可以等下载完成后手动改一下,比如像有强迫症的我一样... 这是挂了一个晚上下载的总大小,不过还有很多因为一些问题没有遍历下载到,而且会产生很多空文件,最下面我附带了一个递归删除空文件夹的小程序代码. 接下来是文件夹内部~ 图片存放位置默认为d:\picture,可在程序中更改,main函数的开头就是,有注释.爬取的网站为http://www.mmonly.cc/,大家有更好的资源网站可以私我. 爬虫源

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

JAVA正则表达式高级用法(分组与捕获)

正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下在JAVA中实现了的正则的高级用法-分组与捕获.对于要重复单个字符,非常简单,直接在字符后卖弄加上限定符即可,例如 a+ 表示匹配1个或一个以上的a,a?表示匹配0个或1个a.这些限定符如下所示: X ?     X ,一次或一次也没有X *     X ,零次或多次X +     X ,一次或多次X { n }     X ,恰好 n 次X { n ,}     X ,

Java正则表达式入门1

1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 2.用途: 字符串匹配(字符匹配) 字符串查找 字符串替换 字符串分割 例如: 从网页中揪出email地址 IP地址是否正确 从网页中揪出链接 3.java中处理正则表达式的类: java.lang.String java.util.re

java 正则表达式语法

java 正则表达式语法 标签: 正则表达式javawindowsvbscriptscripting电话 2012-05-20 10:11 6705人阅读 评论(1) 收藏 举报  分类: javaSe(16)  目录(?)[+] 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符转义 重复 字符类 反义 替换 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 最后,来点广告… 一些我认为你可能

Java正则表达式应用总结

http://lavasoft.blog.51cto.com/ http://lavasoft.blog.51cto.com/62575/179324    Java正则表达式应用总结 一.概述 正则表达式是Java处理字符串.文本的重要工具. Java对正则表达式的处理集中在以下两个两个类: java.util.regex.Matcher   模式类:用来表示一个编译过的正则表达式. java.util.regex.Pattern   匹配类:用模式匹配一个字符串所表达的抽象结果. (很遗憾,

Java正则表达式详解

本文为转载文章,因为实在写的太好了,所以就拿过来使用了 在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛. 正则表达式的引擎已被许多普通的Unix工具所实现,包括gr

JAVA正则表达式 Pattern和Matcher

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 它包括两个类:Pattern和Matcher . Pattern: 一个Pattern是一个正则表达式经编译后的表现模式. Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类