分享 12 个最常用的正则表达式,能解决你大部分问题

457642fded56d7eef9abb11462a545df.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+ 匹配一位或多位数字

  • $ 表示字符串的结尾

可视化:

82e48110dcac6512c9cb3c2ba26c41cc.png

用法:

9c1d983cfd4e7faf4044051846341785.png

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

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

02、十进制数

目标:

123.123
11
3.14
0.43
0
66
123

正则表达式:

/^\d+(\.?\d+)?$/
  • \.匹配单个 char 。

  • ? 表示可选。

  • () 表示一个组

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

可视化:

f47de8e329a66b24967b42ef057ba278.png

用法:

d8145b1570340ab563a0871fa5c579ef.png

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

03、字母数字字符

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

目标:

123
abc
123abc
acRa32EEE
bytefish
Jack2022

正则表达式:

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

可视化:

edf79edcf08e564bed14b16424825a4f.png

用法:

fb48b9ce6bd23454ab9c450b35ec9b4a.png

04、allow space

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

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

11ec45510c79da3c5833b9c718e0e287.png

用法:

25341b6b246d43997039c0695897fdc6.png

05、电子邮件

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

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

正则表达式1

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

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

198925c7191fcf3faba63c1f413b720b.png

用法:

9fef5e72b8c8f60571a41b94abfc6e3f.png

正则表达式2

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

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

986d45ab9ac8fd14995bb8acad412690.png

用法:

c04906169d3d910e6238e76f131c8163.png

06、密码

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

规则1

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

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

484c7a304ab0db682885d1cade4f3547.png

用法:

56d51f5069b6d51062d481346cda5507.png

规则2:

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

  • 至少 1 个数字字符

  • 至少 1 个小写字母

  • 至少 1 个大写字母

  • 至少 1 个特殊字符

e0ae8913236de027d6512253e915c55e.png

07、用户名

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

例子:

bytefish
jon-snow
Rob_Stark

正则表达式:

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

1b8b8aa79a0b1fec76b7c2951ec32ba4.png

用法:

1321fa20eee20c12263e61ef1969281b.png

08、网址

检查字符串是否为 URL

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

70b1d50ab1c44b7c026b7b295d21f731.png

用法:

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

9cbbd5f21c9d2f73898b94d927044f55.png

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

ed29de99d79f92295431aacefb370dcb.png

用法:

b78922ef418a9361a1dc2295a28a082b.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})$/

ab61c0ef0229d8b9d91e73e2c274089b.png

5b06dc63ecb19af074448028cdc57271.png

11、HTML 标签

将 HTML 标记与属性匹配:

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

fbe4b016b11c87d793fdca59654065c1.png

用法:

5cb0208520d94fe6992126649264a210.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}$

4b2df80a02fa4f5cb56254cd8aec9a58.png

用法:

81b754be477824aa4bc2b4329fef114a.png

总结

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

最后,感谢你的阅读。

学习更多技能

请点击下方公众号

7fffaf57ffdf3576166bac920f79f502.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值