惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
aimingoo的专栏
aimingoo的专栏
S
SegmentFault 最新的问题
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园 - 【当耐特】
月光博客
月光博客
C
Check Point Blog
T
The Blog of Author Tim Ferriss
罗磊的独立博客
博客园 - Franky
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
美团技术团队
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
L
LangChain Blog
The Cloudflare Blog

Jun's Blog

2023 年度总结 OS 学习记 之 XV6 如何编译 GraalVM LLVM 中端优化之 InstCombine C++ 中 inline 关键字的语义 链接与库 C++ 移动语义基础 如何优化矩阵相乘 2022年度总结 CUDA初学笔记 汇编语言之保护模式 汇编语言之实模式 浅析 libc++ 中的 string 实现 std::expected 基本使用 C++模板基础 CSAPP第九章笔记之虚拟内存 CSAPP第八章笔记之异常控制流 2021年度总结 编译安装GCC12 如何给LLVM贡献代码 CSAPP第三章笔记Part 2 CSAPP第三章笔记Part 1 GDB基本使用笔记 读Effetive Modern C++ 之类型推导 给计算机新生的一封信 CMake学习笔记 由Redis学习数据结构--字典 C++中lambda表达式基础 由Redis学习数据结构--链表 对Python及爬虫行业的思考
正则表达式基础总结
Jun · 2021-03-05 · via Jun's Blog

正则表达式基础总结

· Jun

什么是正则表达式

正则表达式简单来理解就是一个字符串,它可以看作一个规则.通过它我们可以提取一个文本中一些具有相同模式的字符串,或者验证所给字符串是否符合要求等. 比如我们想提取一个文件中所有的电话号码,或者前端判断所给数据,如身份证号码是否合法,有无少输等,这时候正则表达式便起到了很大作用.

元字符

元字符 含义
. 匹配任意单个字符除了换行符
* 匹配>=0个重复的字符
+ 匹配>=1个重复的字符
$ 表示末尾
^ 表示开头
` `
? 非贪婪匹配
\ 转义字符,用于匹配一些保留的字符
(xyz) 字符集,匹配与 xyz 完全相等的字符串
{m,n} 匹配m到n个大括号之前的字符

字符集

我们可以用[]来指定一个字符集,用连字符来指定字符集的范围

  • [a-z]表示匹配所有小写字母
  • [0-9]表示匹配所有数字

否定字符集

^用在字符集中的时候,表示否定的意思

[^0-9]表示匹配所有非数字

简写字符集

正则表达式内置了一些常用的字符集

名称 含义
\w 匹配所有字母数字
\W 匹配所有非字母数字
\d 匹配数字
\D 匹配非数字
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\s 匹配所有空格字符
\S 匹配所有非空格字符

重复

  • *表示重复次数大于等于0
  • +表示重复次数大于等于1
  • ?表示重复次数为0或1
  • {n}表示重复n次,{m,n}表示重复m到n次

特征标群

(...)表示括号中的所有字符不可分割,而是作为一个整体参加匹配

常用正则表达式

邮箱

1
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

手机号码

1
^1(3|4|5|6|7|8|9)\d{9}$

域名

1
^((http:\/\/)|(https:\/\/))?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}

IP

1
((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

引用文献