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

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恰好有表示非换行符等。正好是一个互补关系。

JAVA正則表達式小总结的更多相关文章

  1. Java正則表達式入门

     众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...

  2. Java正則表達式语法

    Java正則表達式语法 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.比如,"n"匹配字符"n"."\n"匹配换行 ...

  3. java正則表達式 match、find匹配位置

    如题.对于java正則表達式这几个方法匹配一次后的,匹配位置搞不太清楚,就写了几个样例.例如以下: String ss="ooaaoo"; Pattern pt=Pattern.c ...

  4. java正則表達式总结

    近期用到的正則表達式 因为近期在做一个android的新闻client.多次用到了正則表達式.因此总结下. 1.使用正則表達式获取Rss资源内的文章内容的图片url 由于在每条新闻浏览的listVie ...

  5. Java正則表達式

    近期工作中常常要用到正則表達式,不得不花点时间对其进行一定的学习.   JDK中提供了2个类来支持正則表達式,各自是java.util.regex.Pattern和java.util.regex.Ma ...

  6. Java正則表達式演示样例

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public s ...

  7. java正則表達式的坑

    java中正則表達式比較有意思,这里列举几个常见的坑 1.[]符号,中括号表示当中的数据都是或的关系 假设[\\w+]是匹配条件 abc能否够匹配的到呢? 首先\\w(注意这里没有中括号)表示a-z ...

  8. 【开卷故意】JAVA正則表達式模版

    专业既然是机器学习.那工作肯定也是继续和数据打交道,那么问题来了,非常多时候推荐算法和数据挖掘算法都是现成可用的,平台初建,重点还在数据过滤和抽取.如何高效的抽取数据? 利用往常算法比赛中经常使用的字 ...

  9. JAVA中正則表達式总结

    昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...

随机推荐

  1. Laravel5.1学习笔记11 系统架构3 服务提供者

    服务提供者 简介 写一个服务提供者 Register注册方法 Boot 方法 注册提供者 缓载提供者 简介 Service providers are the central place of all ...

  2. fcc 响应式框架Bootstrap 练习3

    class="container-fluid"控制宽度100% <div class="container-fluid"> <h3 class ...

  3. Android 控制硬加速 hardwareAccelerated

    从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作. 启用硬加速最简单的 ...

  4. Windows 10 IIS所有的html返回空白

    这是一个神奇的现象.因为使用IIS已经有N多年了,喜欢使用它是因为它随手可得.自从装上windows10以来,直至今天才用它来调试客户端程序.想在上面放一个静态的json数据,省的还要去建立一个Web ...

  5. 【sqli-labs】 less44 POST -Error based -String -Stacked Blind(POST型基于盲注的堆叠字符型注入)

    盲注漏洞,登陆失败和注入失败显示的同一个页面 可以用sleep函数通过延时判断是否闭合引号成功 这个方法有一点不好的地方在于,并不能去控制延时,延时的时间取决于users表中的数据数量和sleep函数 ...

  6. ffmpeg从内存读取文件

    正常情况,ffmpeg直接从文件读取 AVFormatContext * _ctx = NULL; avformat_open_input(&_ctx, _filePath, 0, 0); 我 ...

  7. 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

  8. Django - orm字段类型介绍

    1.根据类自动创建数据库表 #app.py下的models.py python manage.py makemigrations python manage.py migrate 执行完上述命令后,自 ...

  9. 15.6.2【Task使用】 组合异步操作

    对于C# 5异步特性,我最喜欢的一点是它可以自然而然地组合在一起.这表现为两种不同的 方式.最明显的是,异步方法返回任务,并通常会调用其他返回任务的方法.这些方法可以是直 接的异步操作(如链的最底部) ...

  10. 1.Linux入门介绍

    1.1 Linux概述 1.1.1 Linux简要介绍 Linux的由来: Linux的内核最初是由芬兰人李纳斯·托瓦茨在上大学的时候编写的一个内核,它是基于Unix操作系统编写的 大多服务器使用的是 ...