目录
一.正则表达式的常见应用场景
二.推荐几款正则表达式的测试工具
三.基础语法
1.元字符
2.反义符
3.边界符
4.转义字符
?5.计量符
?6.逻辑符
?7.贪婪与懒惰语法
?8.正则表达式处理选项(RegexOptions)
四.常用正则表达式
一.正则表达式的常见应用场景
- 批量提取、替换有规律的字符串在各种高级文本编辑器中的使用
- 在各类办公软件(Office等)中使用
- 各种开发语言中的使用(C#、Java、JS、Perl、PHP等)
- 用户输入的合法性验证(IP地址、特殊的订单号要求等)
- 模板引擎的标签库开发
- 网络爬虫(抓取机器人)的开发
- 批量的文本高效处理
二.推荐几款正则表达式的测试工具
1.推荐RegexBuddy http: //www.regexbuddy. com
2.RegExBuilder http://www.redfernplace.com/software-projects/regex-builder/
3.在线测试工具
- http://tool.chinaz.com/regex/
- http://regexper. com
- https://www. debuggex. com
三.基础语法
1.元字符
字符 | 名称 | 说明 | . | | 匹配除换行符以外的任意字符 | \w | word单词 | 匹配字母、数字、下划线和汉字 | \s | Space空格 | 匹配任意的空格字符 | \d | Digit数字 | 匹配数字 | \b | Break打破,单词边界 | 匹配单词的开始或结束 |
2.反义符
字符 | 说明 | \W | 匹配任意不是字符、数字、下划线、汉字的字符 | \S | 匹配任意不是空格符的字符 | \D | 匹配任意非数字的字符 | \B | 匹配不是单词开头或结束的位置 |
3.边界符
字符 | 说明 | ^ | 匹配字符串的开始 | $ | 匹配字符串的结束 | [x] | 匹配单个字符,x代表任意单个字符 | () | 表示分组 | - | 表示区间 |
4.转义字符
?
字符 | 说明 | \ | x表示正则表达式中占用的任意特殊字符 | \\ | 匹配转义字符\本身 | \t | 匹配一个制表符 | \r | 匹配一个Enter符 | \n | 匹配一个换行符 |
?5.计量符
字符 | 说明 | * | 匹配字符(贪婪)重复零次或更多(任意次数) | + | 匹配字符(懒惰)重复一次或更多次(至少重复一次) | ? | 匹配字符(占位)重复零次或一次(可有可无) | {n} | 匹配字符重复n次 | {n , m} | 匹配字符重复n次到m次 | {n, } | 表示某个字符表示区间 |
?6.逻辑符
字符 | 说明 | | | 表示逻辑或 | = | 逻辑等于(环视肯定顺序) | ! | 逻辑非(环视否定顺序) | <= | 环视肯定逆序 | <! | 环视否定逆序 |
?7.贪婪与懒惰语法
语法 | 说明 | *? | 重复任意次,但尽可能少重复 | =? | 重复1次或更多次,但尽可能少重复 | ?? | 重复0次或1次,但尽可能少重复 | {n, m}? | 重复n到m次,但尽可能少重复 | {n, } | 重复n次以上,但尽可能少重复 |
?8.正则表达式处理选项(RegexOptions)
语法 | 说明 | lgnoreCase | 匹配时不区分大小写 | Multiline | 更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含义是:匹配\n之前的位置以及字符串结束前的位置。) | Singleline | 更改的含义,使它与每一个字符匹配(包括换行符\n) | lngnorePatternWhitespace | 忽略表达式中的非转义空白并启用由#标记的注释 | ExplicitCapture | 仅捕获已被显式命名的组 |
四.常用正则表达式
package com.ws.strategy.promition;
import java.util.regex.Pattern;
/**
* 常用正则表达式
*/
public class RegexUtils {
private RegexUtils(){}
/**
* 整数
*/
public static final String intege = "^-?[1-9]\\d*$/"; //整数
/**
* 正整数
*/
public static final String intege1 = "^[1-9]\\d*$/"; //正整数
/**
* 负整数
*/
public static final String intege2 = "^-[1-9]\\d*$/"; //负整数
/**
* 数字
*/
public static final String num = "^([+-]?)\\d*\\.?\\d+$/"; //数字
/**
* 正数(正整数 + 0)
*/
public static final String num1 = "^[1-9]\\d*|0$/"; //正数(正整数 + 0)
/**
* 负数(负整数 + 0)
*/
public static final String num2 = "^-[1-9]\\d*|0$/"; //负数(负整数 + 0)
/**
* 浮点数
*/
public static final String decmal = "^([+-]?)\\d*\\.\\d+$/"; //浮点数
/**
* 正浮点数
*/
public static final String decmal1 = "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$"; //正浮点数
/**
* 负浮点数
*/
public static final String decmal2 = "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$"; //负浮点数
/**
* 浮点数
*/
public static final String decmal3 = "^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$";//浮点数
/**
* 非负浮点数(正浮点数 + 0)
*/
public static final String decmal4 = "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$"; //非负浮点数(正浮点数 + 0)
/**
* 非正浮点数(负浮点数 + 0)
*/
public static final String decmal5 = "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$"; //非正浮点数(负浮点数 + 0)
/**
* 邮件
*/
public static final String email = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$"; //邮件
/**
* 颜色
*/
public static final String color = "^[a-fA-F0-9]{6}$"; //颜色
/**
* url
*/
public static final String url = "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-.\\/?%&=]*)?$"; //url
/**
* 仅中文
*/
public static final String chinese = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$"; //仅中文
/**
* 仅ACSII字符
*/
public static final String ascii = "^[\\x00-\\xFF]+$"; //仅ACSII字符
/**
* 邮编
*/
public static final String zipcode = "^\\d{6}$"; //邮编
/**
* 手机
*/
public static final String mobile = "^(13|15|16|18)[0-9]{9}$"; //手机
/**
* ip地址
*/
public static final String ip4 = "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$"; //ip地址
/**
* 非空
*/
public static final String notempty = "^\\S+$"; //非空
/**
* 图片
*/
public static final String picture = "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga|JPG|BMP|GIF|ICO|PCX|JPEG|TIF|PNG|RAW|TGA)$"; //图片
/**
* 音频
*/
public static final String audio = "(.*)\\.(mp3|wma|mid|midi|wav|vqf|MP3|WMA|MID|MIDI|WAV|VQF)$"; //音频
/**
* 视频
*/
public static final String video = "(.*)\\.(rm|3gp|mp4|rmvb|avi|wmv|flv|vob|exe|mkv|swf|RM|3GP|MP4|RMVB|AVI|WMV|FLV|VOB|EXE|MKV|SWF)$"; // 视频格式
/**
* 压缩文件
*/
public static final String rar = "(.*)\\.(rar|zip|7zip|tgz|RAR|ZIP|7ZIP|TGZ)$"; //压缩文件
/**
* 日期
*/
public static final String date = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$"; //日期
/**
* 日期时间
*/
public static final String datetime = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}(\\s\\d{2}:)?(\\d{2}:)?(\\d{2})?$"; //日期和时间
/**
* QQ号码
*/
public static final String qq = "^[1-9]*[1-9][0-9]*$"; //QQ号码
/**
* 电话号码的函数(包括验证国内区号,国际区号,分机号)
*/
public static final String tel = "^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$"; //电话号码的函数(包括验证国内区号,国际区号,分机号)
/**
* 用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
*/
public static final String username = "^[A-Za-z]\\w{5,}$"; //用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
/**
* 字母数字组合
*/
public static final String allstring = "^\\w+$"; //字母数字组合
/**
* 字母
*/
public static final String letter = "^[A-Za-z]+$"; //字母
/**
* 大写字母
*/
public static final String letter_u = "^[A-Z]+$"; //大写字母
/**
* 小写字母
*/
public static final String letter_l = "^[a-z]+$"; //小写字母
/**
* 第二代身份证
*/
public static final String idcard = "^[1-9]([0-9]{14}|[0-9]{17})$"; //身份证
/**
* 数字或字母
*/
public static final String numOrStr = "^[A-Za-z0-9]+$";//数字或字母
/**
* 匹配字符是否符合要求
* @return
*/
public static boolean test(String input,String regx)
{
return Pattern.matches(regx, input);
}
}
?
?
|