前言:在写管理页面前端的的时候看到了HTML 属性:pattern - HTML(超文本标记语言) | MDN (mozilla.org),补充一下正则匹配的相关知识。正则表达式可以在文本中查找、替换、提取和验证特定的模式。
2025年2月23日14:14:50已更新 ai还是比菜鸟教程好用啊
1. 基础元字符
.
: 匹配任何单个字符(除了换行符)。^
: 匹配输入的开始。
$
: 匹配输入的结束。
[]
: 字符集,用于匹配方括号中的任一字符。例如,[a-z]
表示匹配任何小写字母。
|
: 或操作符,匹配其左边或右边的表达式。
示例:
^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
让我们继续保持高效的工作进度,推动项目成功实施