对正则表达式说不!!!

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

一、正则表达式内容分类

  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:匹配任意一个字母或数字。

  1. 预定义字符类

.:匹配任意单个字符(除换行符\n外)。

\d:匹配任意一个数字(等同于0-9)。

\D:匹配任意一个非数字(等同于\^0-9)。

\w:匹配任意一个字母、数字或下划线(等同于a-zA-Z0-9_)。

\W:匹配任意一个非字母、非数字、非下划线的字符(等同于\^a-zA-Z0-9_)。

\s:匹配任意一个空白字符(如空格、制表符\t、换行符\n等)。

\S:匹配任意一个非空白字符。

  1. 边界匹配

^:匹配字符串的开头。

$:匹配字符串的结尾。

\b:匹配单词边界,即单词与非单词字符之间的位置。

\B:匹配非单词边界。

  1. 量词

*:匹配前面的字符或子模式0次或多次。

+:匹配前面的字符或子模式1次或多次。

?:匹配前面的字符或子模式0次或1次。

{n}:匹配前面的字符或子模式恰好n次。

{n,}:匹配前面的字符或子模式至少n次。

{n,m}:匹配前面的字符或子模式至少n次,但不超过m次。

  1. 分组与引用

():将多个字符或模式组合成一个子模式,便于量词修饰或捕获分组。

\1、\2等:表示对捕获分组的引用,\1表示引用第一个捕获分组的内容。

  1. 选择

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

  1. 转义字符

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

  1. 断言

(?=...):正向肯定预查,匹配后面跟有指定模式的字符串。

(?!...):正向否定预查,匹配后面不跟有指定模式的字符串。

(?<=...):反向肯定预查,匹配前面有指定模式的字符串。

(?<!...):反向否定预查,匹配前面没有指定模式的字符串。

  1. 非捕获分组

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

  1. 模式修饰符

i:不区分大小写。

m:多行模式,^和$会匹配每一行的开头和结尾。

s:单行模式,.会匹配任意字符,包括换行符。

g:全局匹配,匹配字符串中的所有可能位置。

  1. 常见应用场景

手机号码:^13456789\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)

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

^134567890-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号)。
  • $
    匹配字符串的结尾,确保整个字符串在这里结束。
相关推荐
2301_7818335221 小时前
Python 正则表达式入门教程
开发语言·python·正则表达式
五阿哥永琪1 天前
正则表达式
数据库·mysql·正则表达式
小森林之主1 天前
深入正则表达式:核心语法与实战剖析
javascript·python·正则表达式·编程技巧·字符串处理
小森林之主1 天前
JavaScript 正则表达式:从零开始的实战对比
javascript·正则表达式·前端开发·性能对比·文本处理
不吃土豆的马铃薯1 天前
C++ 正则表达式入门详解
linux·服务器·网络·数据库·c++·正则表达式
二月夜3 天前
剖析Java正则表达式回溯问题
java·正则表达式
小林ixn5 天前
从拼多多手机号验证到模板引擎:深入正则表达式与 JS 字符串处理
开发语言·javascript·正则表达式
水木流年追梦6 天前
大模型入门-大模型优化方法12-YaRN 长文本外推技术
人工智能·分布式·算法·正则表达式·prompt
水木流年追梦6 天前
大模型入门-大模型优化方法13- MTP 多 token 输出、DCA 双块注意力
人工智能·分布式·算法·正则表达式·prompt
YHHLAI7 天前
[特殊字符] 拼多多大厂笔试题——正则表达式
正则表达式