热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

12个最常用的正则表达式,帮助你解决50%的问题

英文|https:medium.comfrontend-canteenyou-dont-need-to-fully-understand-regex-you-just-need-t

e1c6e7826481a2919c4a918b809e223c.jpeg

英文 | https://medium.com/frontend-canteen/you-dont-need-to-fully-understand-regex-you-just-need-to-know-these-10-most-used-expressions-197dd2397308

翻译 | 杨小爱

坦率地说,我从来没有理解过正则表达式,我花了很多时间学习它,但我仍然不明白。

后来我明白了一个道理:我真的不需要完全理解正则表达式的所有原理,把一些常用的正则表达式理解通透,因为我们真正使用的正则表达式数量有限,我只需将它们添加到我的笔记本中(甚至不需要记住)。

今天,我收集整理了一些web项目中经常用到的正则表达式,我觉得可以解决50%以上的正则表达式问题。

数字的

01、仅匹配数字字符串

目标:

12312
1232121
4353

正则表达式:

/^\d+$/

简单解释:

  • ^ 表示字符串的开头

  • \d+ 匹配一位或多位数字

  • $ 表示字符串的结尾

可视化:

28358e06ff7ce9c9f8e8a797b4933ad0.png

用法:

9ffefe68e4609c689d644eaa520011ae.png

  • 234,124 包含非法字符 , ,因此它返回 false。

  • id12313 包含两个非法字符 id ,因此它返回 false。

02、十进制数

目标:

123.123
11
3.14
0.43
0
66
123

正则表达式:

/^\d+(\.?\d+)?$/

  • \.匹配单个 char 。

  • ? 表示可选。

  • () 表示一个组

  • (\.?\d)? 是一个可选组

可视化:

48d053cd3f6a8fd93c7fcb9b904cf76a.png

用法:

535601f7047fd96158171422d72bb9c2.png

. 应该在数字中间,所以 .1 和 12.返回 false。

03、字母数字字符

我们在检测用户名和密码时经常使用这个正则表达式。

目标:

123
abc
123abc
acRa32EEE
bytefish
Jack2022

正则表达式:

/^[a-zA-Z0-9]+$/

  • [a-zA-Z0–9] 匹配所有字母和数字

可视化:

d0c91c641b01ba05f8c07ec112dfc034.png

用法:

d2f4c5d07c4292d3fd4d4a8994de1328.png

04、allow space

如果你想在字符串中留出空格,你可以像这样写正则表达式:

/^[a-zA-Z0-9\s]+$/

  • \s 匹配空白。

64367cc4e82e182593c91daceb632444.png

用法:

ac51d4e6842abce26f20b68f9830decd.png

05、电子邮件

电子邮件地址可能有多种格式,我们很难写出完美匹配电子邮件地址的正则表达式。

如果我们添加一些约束,那么我们有以下写法。

正则表达式1

^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

这是 RegularExpressionValidator 在 ASP.NET 中使用的一种。

3700d003f968888bb5388a115781a7cd.png

用法:

1281b6006ee4eea6191032902acbb2ad.png

正则表达式2

^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$

简单的电子邮件表达。不允许在域名中使用数字,并且不允许使用少于 2 个或多于 3 个字母的顶级域(在它们允许更多之前都可以)。

1d4d5b630f4ea5fcfe7d903fdf64ea30.png

用法:

555a88244ae079573d3e40828584a531.png

06、密码

与电子邮件一样,密码可能有不同的规则。下面是一些常见的规则和相关的正则表达式。

规则1

^[a-zA-Z]\w{8,20}$

在这个正则表达式中,密码的第一个字符必须是字母,它必须包含至少 8 个字符且不超过 20 个字符,并且不能使用除字母、数字和下划线以外的字符。

601a1d82eb992862377aa7d398c16561.png

用法:

4e704f1760afea62e8de09ee19b41c2e.png

规则2:

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/

  • 至少 8 个字符

  • 至少 1 个数字字符

  • 至少 1 个小写字母

  • 至少 1 个大写字母

  • 至少 1 个特殊字符

228b11c72b051ab8966035f9db8ab0aa.png

07、用户名

可能包含 _ 和 — 的字母数字字符串,长度为 3 到 16 个字符。

例子:

bytefish
jon-snow
Rob_Stark

正则表达式:

/^[a-zA-Z0-9_-]{3,16}$/

147bd5c82301c0d8acbc750e347e492d.png

用法:

d476f2b48232a6c4e6c70c1e8e1a26f3.png

08、网址

检查字符串是否为 URL

/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/

5d803b7ab1784ebee5f2f13e38ab0338.png

用法:

f8d5be6f18c3e84c7e0d662717b9950e.png

09、IP地址

IPv4

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

1320db405830c84f54fed81a0468f162.png

a975c1ab294a20a7e221ac1c1b3bef73.png

IPv6

(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

10、日期

使用分隔符的日期格式 YYYY-MM-dd -

/([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/

168cae7b70a359d52aca00d4149f6fdb.png

用法:

4680581587bee1837b5930fbe15f7f36.png

日期格式 dd-MM-YYYY 使用分隔符 - 或 . /

/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/

a82d1b862f2892a7df1eafc90df5877c.png

da318022ba76179773b58f97386857e6.png

11、HTML 标签

将 HTML 标记与属性匹配:

/<\/?[\w\s]*>|<.&#43;[\W]>/

ff16cb979d07e77a72f99e198e6e8050.png

用法&#xff1a;

c7de5c6f7efff4c7628c4d0076799347.png

12、电话号码

美国电话号码格式

目标&#xff1a;

123-456-7890
(123) 456-7890
123 456 7890
123.456.7890
&#43;91 (123) 456-7890

正则表达式&#xff1a;

^(\&#43;\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$

9d511d0eee49cf0b4cad7449cf732c51.png

用法&#xff1a;

d14b69a0ebc92b2323ef68a82e7c29e7.png

总结

以上就是我今天跟大家分享的12个常用的正则表达式&#xff0c;希望这些正则表达式对你有用。

最后&#xff0c;感谢你的阅读。

学习更多技能

请点击下方公众号

ccd832a1d88bac4b5f08ba5d1c0e1718.gif

16313647acabe7fde2109ad8dba41c2c.jpeg0d0319b3fc086e36c4c9dc6012b98192.png


推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
author-avatar
静乐思
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有