正则表达式(学习Django过程中大概涉及的)

打印 上一主题 下一主题

主题 769|帖子 769|积分 2307

在学习 Django 的过程中,正则表达式主要应用在以了局景中:

  • 路由匹配(虽然 Django 3.0 及之后推荐利用路径转换器,但相识正则表达式仍然有用)。
  • 表单验证:验证用户输入是否符合特定格式(如邮箱、手机号)。
  • 数据处理:处理或提取字符串中的特定信息。
以下是你在学习 Django 过程中大概涉及到的正则表达式,以及它们的功能和示例。

1. 基本字符匹配

正则表达式形貌示例.匹配恣意单个字符(除了换行符)。a.b 匹配 acb。\d匹配恣意一个数字,等价于 [0-9]。\d{3} 匹配 123。\w匹配字母、数字或下划线,等价于 [a-zA-Z0-9_]。\w+ 匹配 abc123。\s匹配恣意空白字符(空格、制表符、换行等)。\s+ 匹配空格区域。
2. 数目控制

正则表达式形貌示例*匹配前一个字符 0 次或多次。a* 匹配 a 或 aaa。+匹配前一个字符 1 次或多次。a+ 匹配 a 或 aaa。?匹配前一个字符 0 次或 1 次。a? 匹配 a 或空字符串。{n}匹配前一个字符正好 n 次。a{3} 匹配 aaa。{n,}匹配前一个字符至少 n 次。a{2,} 匹配 aa 或更多。{n,m}匹配前一个字符至少 n 次,至多 m 次。a{2,4} 匹配 aa、aaa 或 aaaa。
3. 分组和选择

正则表达式形貌示例( ... )将正则表达式括起来,表示分组。(ab)+ 匹配 abab。``匹配左右恣意一个表达式(逻辑“或”)。
4. 特殊符号

正则表达式形貌示例^匹配字符串的开头。^a 匹配 abc 中的 a。$匹配字符串的结尾。a$ 匹配 cba 中的 a。\b匹配单词边界。\bcat\b 匹配 cat,但不匹配 cats。
5. 常用场景的正则表达式

路由匹配

早期的 Django 版本会用正则表达式匹配 URL 路由,例如:
  1. from django.urls import re_path
  2. urlpatterns = [
  3.     re_path(r'^articles/(\d{4})/$', views.year_archive),  # 匹配年份,如 /articles/2024/
  4. ]
复制代码
表单验证

通过正则表达式验证用户输入:
  1. import re
  2. from django import forms
  3. class MyForm(forms.Form):
  4.     phone = forms.CharField(
  5.         validators=[
  6.             forms.RegexValidator(
  7.                 regex=r'^\+?1?\d{9,15}$',
  8.                 message="请输入有效的国际电话号码。"
  9.             )
  10.         ]
  11.     )
复制代码
常见正则表达式实例

场景正则表达式示例邮箱地址^[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$test@example.com国内手机号^1[3-9]\d{9}$13812345678日期(YYYY-MM-DD)^\d{4}-\d{2}-\d{2}$2024-12-25IPv4 地址^(\d{1,3}\.){3}\d{1,3}$192.168.1.1URL^https?://[A-Za-z0-9.-]+\.[A-Za-z]{2,}/?.*$https://example.com/path
Django 中正则表达式替代

Django 3.0 开始推荐利用路径转换器取代复杂的正则表达式匹配。例如:
  1. from django.urls import path
  2. urlpatterns = [
  3.     path('articles/<int:year>/', views.year_archive),  # 替代了正则的方式
  4. ]
复制代码

学习发起


  • 在线工具训练:可以在网站 regex101 测试和理解正则表达式。
  • 从简单开始:从常见的验证需求入手(如邮箱、手机号)。
  • 团结 Django 应用:尝试在表单验证和路由中实际利用正则表达式。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表