当前位置:网站首页>分享 12 个最常用的正则表达式,能解决你大部分问题
分享 12 个最常用的正则表达式,能解决你大部分问题
2022-07-05 14:09:00 【前端达人】
英文 | 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+ 匹配一位或多位数字
$ 表示字符串的结尾
可视化:
用法:
234,124 包含非法字符 , ,因此它返回 false。
id12313 包含两个非法字符 id ,因此它返回 false。
02、十进制数
目标:
123.123
11
3.14
0.43
0
66
123
正则表达式:
/^\d+(\.?\d+)?$/
\.匹配单个 char 。
? 表示可选。
() 表示一个组
(\.?\d)? 是一个可选组
可视化:
用法:
. 应该在数字中间,所以 .1 和 12.返回 false。
03、字母数字字符
我们在检测用户名和密码时经常使用这个正则表达式。
目标:
123
abc
123abc
acRa32EEE
bytefish
Jack2022
正则表达式:
/^[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
^\[email protected][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 个字符。
例子:
bytefish
jon-snow
Rob_Stark
正则表达式:
/^[a-zA-Z0-9_-]{3,16}$/
用法:
08、网址
检查字符串是否为 URL
/https?:\/\/(www\.)?[[email protected]:%._\+~#=]{2,256}\.[a-z]{2,6}\b([[email protected]:%_\+.~#()?&//=]*)/
用法:
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-7890
123 456 7890
123.456.7890
+91 (123) 456-7890
正则表达式:
^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$
用法:
总结
以上就是我今天跟大家分享的12个常用的正则表达式,希望这些正则表达式对你有用。
最后,感谢你的阅读。
学习更多技能
请点击下方公众号
边栏推荐
- R语言使用MASS包的polr函数构建有序多分类logistic回归模型、使用coef函数获取模型中每个变量(自变量改变一个单位)对应的对数优势比(log odds ratio)
- Assembly language
- Brief introduction to revolutionary neural networks
- Lepton 无损压缩原理及性能分析
- LeetCode_69(x 的平方根 )
- 如何将 DevSecOps 引入企业?
- 非技术部门,如何参与 DevOps?
- 享你所想。智创未来
- Requests + BS4 crawl Douban top250 movie information
- 国富氢能冲刺科创板:拟募资20亿 应收账款3.6亿超营收
猜你喜欢
LeetCode_2(两数相加)
区间 - 左闭右开
Comparison of several distributed databases
Laravel dompdf exports PDF, and the problem of Chinese garbled code is solved
Detailed explanation of IP address and preparation of DOS basic commands and batch processing
Lepton 无损压缩原理及性能分析
[machine learning notes] several methods of splitting data into training sets and test sets
What is the future development trend of neural network Internet of things
[js] basic syntax - for loop
Postman简介、安装、入门使用方法详细攻略!
随机推荐
Judge whether the variable is an array
昆仑太科冲刺科创板:年营收1.3亿拟募资5亿 电科太极持股40%
C语言中限定符的作用
R语言ggplot2可视化:使用ggplot2可视化散点图、使用labs参数自定义X轴的轴标签文本(customize X axis labels)
Discussion on memset assignment
Requset + BS4 crawling shell listings
别不服气。手机功能升级就是强
SAS接口有什么优势特点
清大科越冲刺科创板:年营收2亿 拟募资7.5亿
如何深入理解“有限状态机”的设计思想?
How to call the function mode of one hand and one machine
总量分析 核算方法和势方法 - 分摊分析
R语言使用原生包(基础导入包、graphics)中的boxplot函数可视化箱图(box plot)
Sqllab 1-6 exercise
The IPO of Ruineng industry was terminated: the annual revenue was 447million and it was planned to raise 376million
R语言使用ggplot2包的geom_histogram函数可视化直方图(histogram plot)
C - Divisors of the Divisors of An Integer Gym - 102040C
微服务项目部署后,无法访问静态资源,无法访问到上传到upload中的文件,解决办法
What is the future development trend of neural network Internet of things
Mingfeng medical sprint technology innovation board: annual revenue of 350million yuan, proposed to raise 624million yuan