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

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]*>|<.+[\W]>/

ff16cb979d07e77a72f99e198e6e8050.png

用法:

c7de5c6f7efff4c7628c4d0076799347.png

12、电话号码

美国电话号码格式

目标:

123-456-7890
(123) 456-7890
123 456 7890
123.456.7890
+91 (123) 456-7890

正则表达式:

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

9d511d0eee49cf0b4cad7449cf732c51.png

用法:

d14b69a0ebc92b2323ef68a82e7c29e7.png

总结

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

最后,感谢你的阅读。

学习更多技能

请点击下方公众号

ccd832a1d88bac4b5f08ba5d1c0e1718.gif

16313647acabe7fde2109ad8dba41c2c.jpeg0d0319b3fc086e36c4c9dc6012b98192.png

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值