当前位置: 首页 > news >正文

对正则表达式说不!!!

可能大家都会和我一样,时常会遇到正则表达式,有时候会忘记某些字符而苦恼。今天就帮助大家克服它,虽然不多,但我认为掌握这些足够了,万变不离其宗,以不变应万变。

一、正则表达式内容分类

1. 字符类
[abc]:匹配方括号内的任意一个字符,如a、b或c。
[^abc]:匹配方括号内不在的任意一个字符,即匹配除a、b、c之外的任何字符。
[a-z]:匹配任意一个小写字母(范围从a到z)。
[A-Z]:匹配任意一个大写字母(范围从A到Z)。
[0-9]:匹配任意一个数字(范围从0到9)。
[a-zA-Z0-9]:匹配任意一个字母或数字。


2. 预定义字符类
.:匹配任意单个字符(除换行符\n外)。
\d:匹配任意一个数字(等同于[0-9])。
\D:匹配任意一个非数字(等同于[^0-9])。
\w:匹配任意一个字母、数字或下划线(等同于[a-zA-Z0-9_])。
\W:匹配任意一个非字母、非数字、非下划线的字符(等同于[^a-zA-Z0-9_])。
\s:匹配任意一个空白字符(如空格、制表符\t、换行符\n等)。
\S:匹配任意一个非空白字符。


3. 边界匹配
^:匹配字符串的开头。
$:匹配字符串的结尾。
\b:匹配单词边界,即单词与非单词字符之间的位置。
\B:匹配非单词边界。


4. 量词
*:匹配前面的字符或子模式0次或多次。
+:匹配前面的字符或子模式1次或多次。
?:匹配前面的字符或子模式0次或1次。
{n}:匹配前面的字符或子模式恰好n次。
{n,}:匹配前面的字符或子模式至少n次。
{n,m}:匹配前面的字符或子模式至少n次,但不超过m次。


5. 分组与引用
():将多个字符或模式组合成一个子模式,便于量词修饰或捕获分组。
\1、\2等:表示对捕获分组的引用,\1表示引用第一个捕获分组的内容。


6. 选择
|:表示“或”的关系,用于匹配多个模式中的任意一个。例如,cat|dog可以匹配“cat”或“dog”。


7. 转义字符
\:用于转义正则表达式中的特殊字符,使其失去特殊含义。例如,\.表示匹配一个点号.,而不是任意字符。


8. 断言
(?=...):正向肯定预查,匹配后面跟有指定模式的字符串。
(?!...):正向否定预查,匹配后面不跟有指定模式的字符串。
(?<=...):反向肯定预查,匹配前面有指定模式的字符串。
(?<!...):反向否定预查,匹配前面没有指定模式的字符串。


9. 非捕获分组
(?:...):非捕获分组,用于分组但不捕获内容,不会创建捕获组。


10. 模式修饰符
i:不区分大小写。
m:多行模式,^和$会匹配每一行的开头和结尾。
s:单行模式,.会匹配任意字符,包括换行符。
g:全局匹配,匹配字符串中的所有可能位置。


11. 常见应用场景
手机号码:^1[3456789]\d{9}$
邮箱地址:^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
IP地址:^(?:\d{1,3}\.){3}\d{1,3}$
日期:^\d{4}-\d{2}-\d{2}$(如2023-01-01)

 二、关于手机号码、邮箱地址、日期的解释(实例)

 ^1[3456789][0-9]{9}$

解释:

  • ^:表示匹配字符串的开始位置。
  • 1:表示字符串必须以数字1开头。
  • [3456789]:表示第二位数字必须是3、4、5、6、7、8或9中的任意一个。
  • [0-9]{9}:表示接下来的9个字符必须是0到9之间的任意数字。
  • $:表示匹配字符串的结束位置。

 作用:
这个正则表达式通常用于匹配符合中国大陆手机号码格式的字符串。中国大陆的手机号码格式通常是11位数字,以1开头,第二位是3到9中的一个数字,后面跟着9位任意数字。

解释:

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

  •  ^
    匹配字符串的开头,确保整个字符串从这里开始。
  • [a-zA-Z0-9_.+-]+
    匹配电子邮件地址的用户名部分。
  • [a-zA-Z0-9_.+-]:表示可以匹配任意一个字母(大写或小写)、数字、下划线_、点号.、加号+或减号-。
  • +:表示前面的字符集可以出现一次或多次。例如,example.email+alias是有效的用户名部分。
  • @
    匹配一个@符号,这是电子邮件地址中分隔用户名和域名的必要部分。
  • [a-zA-Z0-9-]+
    匹配电子邮件地址的域名部分(不包括顶级域名)。
  • [a-zA-Z0-9-]:表示可以匹配任意一个字母(大写或小写)、数字或减号-。
  • +:表示前面的字符集可以出现一次或多次。例如,example-domain是有效的域名部分。
  • \.
    匹配一个点号.,用于分隔域名和顶级域名。
  • [a-zA-Z0-9-.]+
    匹配电子邮件地址的顶级域名部分。
  • [a-zA-Z0-9-.]:表示可以匹配任意一个字母(大写或小写)、数字、点号.或减号-。
  • +:表示前面的字符集可以出现一次或多次。例如,com、co.uk或example.com是有效的顶级域名部分。
  • $
    匹配字符串的结尾,确保整个字符串在这里结束。

 

^\d{4}-\d{2}-\d{2}$

解释:

  • ^
    匹配字符串的开头,确保整个字符串从这里开始。
  • \d{4}
    匹配四位数字,表示年份。例如,2023、1999等。
  • -
    匹配一个连字符-,用于分隔年份、月份和日期。
  • \d{2}
    匹配两位数字,表示月份。例如,01(一月)、12(十二月)。
  • -
    再次匹配一个连字符-。
  • \d{2}
    匹配两位数字,表示日期。例如,01(1号)、31(31号)。
  • $
    匹配字符串的结尾,确保整个字符串在这里结束。

相关文章:

  • 【Android开发】华为手机安装包安装失败“应用是非正式版发布版本,当前设备不支持安装”问题解决
  • CentOS本机配置为时间源
  • 自定义基座实时采集uniapp日志
  • depcheck检查node.js项目中未使用和缺失依赖的工具
  • 【Apache Paimon】-- 作为一名小白,如何系统地学习 Apache paimon?
  • Ansible批量配置服务器免密登录步骤详解
  • 【pytest】获取所有用例名称并存于数据库
  • 联想电脑如何进入BIOS?
  • 新数据结构(9)——Java异常体系
  • AI编程01-生成前/后端接口对表-豆包(或Deepseek+WPS的AI
  • 【Vue3 入门到实战】15. 组件间通信
  • CEF132 编译指南 Linux 篇 - 构建编译环境:工具链配置(二)
  • DatePicker 实现:日期范围截止时间为23:59:59
  • 蓝桥杯备赛笔记(二)
  • 番外04:前端面试八股文-HTML
  • QML 快捷键与Shortcut的使用
  • 一个简单的Windows TCP服务器实现
  • windows系统 从 Hugging Face网站上使用 huggingface-cli 命令下载AI大模型到本地
  • 在npm上传属于自己的包
  • ARM64 Trust Firmware [一]
  • 全国网站备案/昆明网络推广方式有哪些
  • 网站开发源代码mvc/南阳网站seo
  • 中国空间站真实图片/搜索引擎优化时营销关键词
  • 电信公司网络维护/长春seo代理
  • 注册网站费属于什么费用/网站seo推广平台
  • 苹果合适网站开发吗/北京百度科技有限公司电话