美文网首页
正则表达式

正则表达式

作者: 郑海鹏 | 来源:发表于2019-12-27 19:45 被阅读0次

这是一篇很久之前记录的笔记,最近用到的比较多,索性发出来。
如果遇到不知道怎么写的正则,可以在评论中发出来,持续更新。

1. 限制开头(^) 与限制结尾($)

  • ^start : 表示以"start"开始;
  • end$ : 表示以"end"结尾。

2. 范围限制([])

  • [0-9] : 表示一个字符,满足0到9之间的任何一个数字;
  • [a-z] : 表示一个字符,满足a到z之间的任何一个小写字母;
  • [A-Z] : 表示一个字符,满足A到Z之间的任何一个大写字母
  • [a-zA-Z] : 表示一个字符,满足a到z 或者 A到Z之间的任何一个字母;
  • [0-9a-z] : 表示一个字符, 满足0到9 或者 a到z之间的任何一个字母。

3. 反向范围限制([^])

  • [^0-9] : 表示一个字符, 满足除了0到9之外的其他任何一个字符;
  • [^a-z] : 表示一个字符, 满足除了a到z之外的其他任何一个字符。

4. 出现次数的限制(*, +, ?)

  • * : 紧跟在后面的字符出现0次及以上;
  • + : 紧跟在后面的字符出现1次及以上。
  • Z* : 'Z' 出现了0次及以上;
  • Z+ : 'Z' 出现了1次及以上;

5. 指定出现次数({})

  • Z{3} : 表示Z出现3次,即ZZZ;
  • Z{3,} : 表示出现3次以上;
  • Z{3, 5} : 表示Z出现3到5次(包括5次)。

6. 转义字符

  • "\\d" : 代表一个数字
String reg = "\\d";
boolean isMatch = Pattern.matches(reg, "5");  
// isMatch == true;
  • "\\D" : 代表一个非数字
String reg = "\\D";
boolean isMatch = Pattern.matches(reg, "5");  
// isMatch == false;
  • "\\w" : 代表一个字符,包括0-9,a-z,A-Z,_ 。
String reg = "\\w*";
boolean isMatch = Pattern.matches(reg, "aB_0"); 
// isMatch == true;
  • "\\W" : 代表一个字符,除了0-9,a-z,A-Z,_ 。
String reg = "\\W*";
boolean isMatch = Pattern.matches(reg, "++++"); 
// isMatch == true;
  • "\t" : 制表符
  • "\n" : 换行符
  • "\r" : 回车符
  • "\f" : 换页符
  • "\s" : 空白字符,包括制表符、换行符、回车符、换页符
  • "\S" : 非空白字符
  • "." : 代表任意一个字符
  • "\\." : 表示一个'.'
String reg = "\\.";
boolean isMatch = Pattern.matches(reg, "."); 
// isMatch == true;
  • "\\\\" : 表示一个''
String reg = "\\\\";
boolean isMatch = Pattern.matches(reg, "\\"); 
// isMatch == true;

7. 或者(|) 组合 (())

  • A|B : 表示 A或者B;
  • (AB)* : 把"AB"看做一个整体,重复0次及以上。

8. 实例

8.1 身份证号

分析:

  • 身份证号有15位或者18位;
  • 身份证由数字或者X字母组成。
String reg = "(\\d|X){15}|(\\d|X){18}";
boolean isMatch = Pattern.matches(reg, "140202199204055528"); 
// isMatch == true;

8.2 邮箱

分析:

  • 邮箱有一个@符号;
  • @前面是一个字符串,可以包含任意字符。可以是xxx.xxx.xxx的形式。分解为 xxx 和 (.xxx)* 两个部分;
  • @后面是一个字符串,和@前面一样。
String reg = "(\\w)+(\\.\\w+)*@(\\w)+(\\.\\w+)*";
boolean isMatch = Pattern.matches(reg, "284967632@qq.com"); 
// isMatch == true;

8.3 是否由指定字符组成

判断是否由指定数字组成,实际是在判断以这些字符开始且以这些字符结束,用 ^(想要的字符)+$ 即可。
例如判断是否由 数字和'+'、'-' 符号组成:

// JavaScript
var isValid = /^([0-9]|\+|\-)+$/.test(submitter);

8.4 判断是否包含Emoji

// JavaScript
var hasEmoji = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/.test(string);

8.5 不包含指定字符

不包含 abc 和 def。

^(?!.*(abc|def)).*$

8.5 不包含指定字符且包含指定字符

不包含 abc 并且 包含 def。
^((?!abc).)def((?!abc).)$

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/qnzdoctx.html