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

web前端开发

共 3053字,需浏览 7分钟

 ·

2022-07-05 06:35

英文 | 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、仅匹配数字字符串

目标:

1231212321214353
正则表达式:
/^\d+$/

简单解释:

  • ^ 表示字符串的开头

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

  • $ 表示字符串的结尾

可视化:

用法:

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

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

02、十进制数
目标:
123.123113.140.43066123
正则表达式:
/^\d+(\.?\d+)?$/
  • \.匹配单个 char 。

  • ? 表示可选。

  • () 表示一个组

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

可视化:

用法:

. 应该在数字中间,所以 .1 和 12.返回 false。
03、字母数字字符
我们在检测用户名和密码时经常使用这个正则表达式。

目标:

123abc123abcacRa32EEEbytefishJack2022

正则表达式:

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

可视化:

用法:

04、allow space

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

/^[a-zA-Z0-9\s]+$/
  • \s 匹配空白。

用法:

05、电子邮件

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

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

正则表达式1

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

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

用法:

正则表达式2

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

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

用法:

06、密码

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

规则1

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

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

用法:

规则2:

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

  • 至少 1 个数字字符

  • 至少 1 个小写字母

  • 至少 1 个大写字母

  • 至少 1 个特殊字符

07、用户名

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

例子:

bytefishjon-snowRob_Stark

正则表达式:

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

用法:

08、网址

检查字符串是否为 URL

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

用法:

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]?)$


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]))/

用法:

日期格式 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})$/


11、HTML 标签

将 HTML 标记与属性匹配:

/<\/?[\w\s]*>|<.+[\W]>/

用法:

12、电话号码

美国电话号码格式

目标:

123-456-7890(123) 456-7890123 456 7890123.456.7890+91 (123) 456-7890

正则表达式:

^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$

用法:

总结

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

最后,感谢你的阅读。


学习更多技能

请点击下方公众号

浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报