前言:在写管理页面前端的的时候看到了HTML 属性:pattern - HTML(超文本标记语言) | MDN (mozilla.org),补充一下正则匹配的相关知识。正则表达式可以在文本中查找、替换、提取和验证特定的模式。

2025年2月23日14:14:50已更新 ai还是比菜鸟教程好用啊

1. 基础元字符

  • . : 匹配任何单个字符(除了换行符)。
  • ^ : 匹配输入的开始。

image-20250223135439371

  • $ : 匹配输入的结束。

image-20250223135408782

  • [] : 字符集,用于匹配方括号中的任一字符。例如,[a-z]表示匹配任何小写字母。

image-20250223135619825

  • | : 或操作符,匹配其左边或右边的表达式。

示例:

  • ^abc 匹配以“abc”开头的字符串。
  • abc$ 匹配以“abc”结尾的字符串。
  • a|b 匹配“a”或“b”。

2. 量词

  • * : 匹配前一个字符零次或多次。

如a*表示匹配的字符串有””, “a”, “aa”, “aaa”,”aaaa” 等等

  • + : 匹配前一个字符一次或多次。

如a+表示匹配的字符串有”a”, “aa”, “aaa”等等

  • ? : 匹配前一个字符零次或一次。

如a?表示匹配的字符串只””或 “a”

  • {n} : 精确匹配前一个字符n次。

如a{3}表示匹配的字符串只有”aaa”

  • {n,} : 匹配前一个字符至少n次

如a{2,}表示匹配的的字符串有“aa” “aaa” “aaaa”等等

  • {n,m} : 匹配前一个字符n到m次。

如a{2,4}表示匹配到的字符串只有“aa” “aaa” “aaaa”

对于字符串“aaaabbbbbcccc”进行正则规则a{2,}b{4}c{2,4}会匹配到“aaaabbbbbcccc”(要求a至少2次b刚好4次c两次到四次间)

3. 预定义字符类

  • \d : 匹配一个数字,等价于[0-9]

如\d可以匹配到任意0-9之间的单个数字,\d{3}可以匹配到3个连续数字

  • \D : 匹配一个非数字字符,等价于[^0-9]

如\D可以匹配到任意一个非数字字符,\D{2}可以匹配到2个连续非数字

  • \w : 匹配一个字母、数字或下划线,等价于[a-zA-Z0-9_]

如\w{3,10}可以匹配到由3到10个字母、数字或下划线组成的字符串如”user123” “user_name”

  • \W : 匹配一个非字母、非数字、非下划线字符,等价于[^a-zA-Z0-9_]

如\W+可以匹配到一个或多个非字母数字下划线字符,如”!”, “@”, “#”等

  • \s : 匹配任何空白字符(包括空格、制表符、换页符等)

如\s可以匹配的字符串:” “, “\t”, “\n”,\s+可以匹配一个或多个空白符如” “、”\t”等

  • \S : 匹配任何非空白字符。

如\S+可以匹配一个或多个非空白字符,如”abc”, “123”等

4. 分组和捕获

  • () : 用来分组,表示一组字符或表达式。
  • \1, \2, … : 引用先前捕获的组。

示例:

  • (abc) 捕获字符串“abc”。
  • (abc|def) 匹配“abc”或“def”。

5. 常用示例

  • \d{3}-\d{2}-\d{4} : 匹配SSN(社会安全号)格式,如“123-45-6789”。
  • ^[a-zA-Z0-9_-]{3,16}$ : 匹配一个长度在3到16之间的用户名,只包含字母、数字、下划线和短横线。

6. 替换和搜索

在 JavaScript 或 Python 等编程语言中,正则表达式常用于字符串的替换和搜索。

示例:

  • JavaScript:str.replace(/\d+/g, 'number') 将所有数字替换为“number”。
  • Python:re.sub(r'\d+', 'number', text) 替换所有数字。

7.练习网站和案例

正则表达式在线测试 | 菜鸟工具

2025年2月23日,今天是一个特别的日子。温度大约在16°C到20°C之间。我们团队的会议定于下午3:00在会议室A举行,届时将讨论项目进展与未来的计划。
联系方式:支持邮箱contact@company.com,客服电话:400-123-4567。
参会人员包括:张伟,李娜,王磊,刘俊;项目负责人是张伟。今天的任务主要包括:
1. 数据库架构设计;
2. 用户需求分析;
3. 编写系统开发文档。
我们的项目代号是“Alpha2025”,进展顺利,预计按时完成。请记得查看我们的GitHub页面:[https://github.com/alpha2025](https://github.com/alpha2025)。
除了这项工作,团队成员也需要关注公司的内部活动安排,如:4月5日的员工聚会和6月12日的技术培训。
- 张伟,工程师,邮箱:zhangwei@company.com,工号:00123
- 李娜,产品经理,邮箱:lina@company.com,工号:00124
让我们继续保持高效的工作进度,推动项目成功实施