搜索
首页web前端html教程能让你少写1000行代码的20个正则表达式

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。

正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:

<span class="hljs-keyword">var reg = <span class="hljs-regexp">/^(\\d{1,4})(-|\\/)(\\d{<span class="hljs-number">1,<span class="hljs-number">2})\\<span class="hljs-number">2(\\d{<span class="hljs-number">1,<span class="hljs-number">2})$/; 
<span class="hljs-keyword">var r = fieldValue.match(reg);             
<span class="hljs-keyword">if(r==<span class="hljs-literal">null)alert(<span class="hljs-string">'Date format error!');</span></span></span></span></span></span></span></span></span></span></span>

下面是技匠整理的,在前端开发中经常使用到的20个正则表达式。

1 . 校验密码强度

密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

^(?=.<span class="hljs-emphasis">*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$</span>

2. 校验中文

字符串仅能是中文。

^[\\u4e00-\\u9fa5]{0,}$

3. 由数字、26个英文字母或下划线组成的字符串

^\\w+$

4. 校验E-Mail 地址

同密码一样,下面是E-mail地址合规性的正则检查语句。

[<span class="hljs-string">\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[<span class="hljs-string">\\w!#$%&'*+/=?^_`{|}~-]+)<span class="hljs-emphasis">*@(?:[\\w](?:[\\w-]*[<span class="hljs-string">\\w])?\\.)+[<span class="hljs-string">\\w](<span class="hljs-link">?:[\\w-]*[\\w])?</span></span></span></span></span></span>

5. 校验身份证号码

下面是身份证号码的正则校验。15 或 18位。

15位:

^[<span class="hljs-number">1-<span class="hljs-number">9]\\d{<span class="hljs-number">7}((<span class="hljs-number">0\\d)<span class="hljs-params">|(1[0-2]))(([0|<span class="hljs-number">1<span class="hljs-params">|2]\\d)|<span class="hljs-number">3[<span class="hljs-number">0-<span class="hljs-number">1])\\d{<span class="hljs-number">3}$</span></span></span></span></span></span></span></span></span></span></span>

18位:

^[<span class="hljs-number">1-<span class="hljs-number">9]\\d{<span class="hljs-number">5}[<span class="hljs-number">1-<span class="hljs-number">9]\\d{<span class="hljs-number">3}((<span class="hljs-number">0\\d)<span class="hljs-params">|(1[0-2]))(([0|<span class="hljs-number">1<span class="hljs-params">|2]\\d)|<span class="hljs-number">3[<span class="hljs-number">0-<span class="hljs-number">1])\\d{<span class="hljs-number">3}([<span class="hljs-number">0-<span class="hljs-number">9]<span class="hljs-params">|X)$</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

6. 校验日期

“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年。

^(?:(?!0000)[<span class="hljs-string">0-9]{4}-(?:(?:0[<span class="hljs-string">1-9]|1[<span class="hljs-string">0-2])-(?:0[<span class="hljs-string">1-9]|1[<span class="hljs-string">0-9]|2[<span class="hljs-string">0-8])|(?:0[<span class="hljs-string">13-9]|1[<span class="hljs-string">0-2])-(?:29|30)|(?:0[<span class="hljs-string">13578]|1[<span class="hljs-string">02])-31)|(?:[<span class="hljs-string">0-9]{2}(?:0[<span class="hljs-string">48]|[<span class="hljs-string">2468][<span class="hljs-symbol">048]|[<span class="hljs-string">13579][<span class="hljs-symbol">26])|(?:0[<span class="hljs-string">48]|[<span class="hljs-string">2468][<span class="hljs-symbol">048]|[<span class="hljs-string">13579][<span class="hljs-symbol">26])00)-02-29)$</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

7. 校验金额

金额校验,精确到2位小数。

^[0-9]+(.[0-9]{2})?$

8. 校验手机号

下面是国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码)

^(<span class="hljs-number">13[<span class="hljs-number">0-<span class="hljs-number">9]<span class="hljs-params">|14[5|<span class="hljs-number">7]<span class="hljs-params">|15[0|<span class="hljs-number">1<span class="hljs-params">|2|<span class="hljs-number">3<span class="hljs-params">|5|<span class="hljs-number">6<span class="hljs-params">|7|<span class="hljs-number">8<span class="hljs-params">|9]|<span class="hljs-number">18[<span class="hljs-number">0<span class="hljs-params">|1|<span class="hljs-number">2<span class="hljs-params">|3|<span class="hljs-number">5<span class="hljs-params">|6|<span class="hljs-number">7<span class="hljs-params">|8|<span class="hljs-number">9])\\d{<span class="hljs-number">8}$</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

9. 判断IE的版本

IE目前还没被完全取代,很多页面还是需要做版本兼容,下面是IE版本检查的表达式。

^.<span class="hljs-emphasis">*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$</span>

10. 校验IP-v4地址

IP4 正则语句。

\\b(?:(?:25[<span class="hljs-string">0-5]|2[<span class="hljs-string">0-4][<span class="hljs-symbol">0-9]|[<span class="hljs-string">01]?[<span class="hljs-string">0-9][<span class="hljs-symbol">0-9]?)\\.){3}(?:25[<span class="hljs-string">0-5]|2[<span class="hljs-string">0-4][<span class="hljs-symbol">0-9]|[<span class="hljs-string">01]?[<span class="hljs-string">0-9][<span class="hljs-symbol">0-9]?)\\b</span></span></span></span></span></span></span></span></span></span></span></span>

11. 校验IP-v6地址

IP6 正则语句。

(([0-9a<span class="hljs-_">-fA-F]{1,4}:){7,7}[0-9a<span class="hljs-_">-fA-F]{1,4}|([0-9a<span class="hljs-_">-fA-F]{1,4}:){1,7}:|([0-9a<span class="hljs-_">-fA-F]{1,4}:){1,6}:[0-9a<span class="hljs-_">-fA-F]{1,4}|([0-9a<span class="hljs-_">-fA-F]{1,4}:){1,5}(:[0-9a<span class="hljs-_">-fA-F]{1,4}){1,2}|([0-9a<span class="hljs-_">-fA-F]{1,4}:){1,4}(:[0-9a<span class="hljs-_">-fA-F]{1,4}){1,3}|([0-9a<span class="hljs-_">-fA-F]{1,4}:){1,3}(:[0-9a<span class="hljs-_">-fA-F]{1,4}){1,4}|([0-9a<span class="hljs-_">-fA-F]{1,4}:){1,2}(:[0-9a<span class="hljs-_">-fA-F]{1,4}){1,5}|[0-9a<span class="hljs-_">-fA-F]{1,4}:((:[0-9a<span class="hljs-_">-fA-F]{1,4}){1,6})|:((:[0-9a<span class="hljs-_">-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a<span class="hljs-_">-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<span class="hljs-_">-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]))</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

12. 检查URL的前缀

应用开发中很多时候需要区分请求是HTTPS还是HTTP,通过下面的表达式可以取出一个url的前缀然后再逻辑判断。

<span class="hljs-keyword">if (!s.match(<span class="hljs-regexp">/^[a-zA-Z]+:\\/\\<span class="hljs-comment">//))
{
    s = <span class="hljs-string">'http://' + s;
}</span></span></span></span>

13. 提取URL链接

下面的这个表达式可以筛选出一段文本中的URL。

^(f|ht){<span class="hljs-number">1}(tp|tps):\\<span class="hljs-regexp">/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?</span></span>

14. 文件路径及扩展名校验

验证windows下文件路径和扩展名(下面的例子中为.txt文件)

^([a-zA-Z]\\<span class="hljs-symbol">:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/<span class="hljs-symbol">:*?<span class="hljs-string">"<>|]+\\.txt(l)?$</span></span></span>

15. 提取Color Hex Codes

有时需要抽取网页中的颜色代码,可以使用下面的表达式。

^<span class="hljs-comment">#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$</span>

16. 提取网页图片

假若你想提取网页中所有图片信息,可以利用下面的表达式。

\\<span class="xml"><span class="hljs-tag">< *[<span class="hljs-attr">img][^\\\\>]<span class="hljs-emphasis">*[src] *= <span class="hljs-emphasis">*[\\"\\']{0,1}([^\\"\\'\\ >]*)</span></span></span></span></span>

17. 提取页面超链接

提取html中的超链接。

(<a\\<span class="hljs-keyword">s*(?!.*\\brel=)[^>]*)(href=<span class="hljs-string">"https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)<span class="hljs-string">"((?!.*\\brel=)[^>]*)(?:[^>]*)></span></span></span>

18. 查找CSS属性

通过下面的表达式,可以搜索到相匹配的CSS属性。

^\\s*[a-zA-Z\\-]+\\s*[:]{<span class="hljs-number">1}\\s[a-zA-Z0<span class="hljs-number">-9\\s.<span class="hljs-comment">#]+[;]{1}</span></span></span>

19. 抽取注释

如果你需要移除HMTL中的注释,可以使用如下的表达式。

<span class="hljs-comment"><!--(.*?)--></span>

20. 匹配HTML标签

通过下面的表达式可以匹配出HTML中的标签属性。

<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?<span class="hljs-symbol">:<span class="hljs-string">".*?"|<span class="hljs-string">'.*?'|[\\^<span class="hljs-string">'">\\s]+))?)+\\s*|\\s*)\\/?></span></span></span></span>

正则表达式的相关语法

下面是我找到的一张非常不错的正则表达式 Cheat Sheet,可以用来快速查找相关语法。

学习正则表达式

我在网上看到了一篇相当不错的正则表达式快速学习指南,有兴趣继续深入学习的同学可以参考。

正则表达式在线测试工具

regex101是一个非常不错的正则表达式在线测试工具,你可以直接在线测试你的正则表达式哦。

 
 
阅读正文请点击此处
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
HTML标签的目的是什么?HTML标签的目的是什么?Apr 28, 2025 am 12:02 AM

htmltagsareessentialforsenteringwebpages,增强辅助性,seo和Performance.1)他们areAnclosedInangleBracketSandInpairStocrateAteAhierArchical.2)samantictagsictagsatagslikslikroikreveuseerexperienceencperienceandseo.3)

什么是自我关闭标签?举一个例子。什么是自我关闭标签?举一个例子。Apr 27, 2025 am 12:04 AM

self-closingtagsinhtmlandxmlaretagsthatclosethem hexpthementneedingAseparateCloseTag,SightifyingmarkingmarkupStrupupStruptoReanDenhancingCodingsifice.1)shemeSsentialInxmmllforelementsswithcontentsswithcontent contentcontent,可确保wellwell-formedDocuments.2)Inhtmlible5,inhtmlibut forfix

超越HTML:网络开发的基本技术超越HTML:网络开发的基本技术Apr 26, 2025 am 12:04 AM

要构建一个功能强大且用户体验良好的网站,仅靠HTML是不够的,还需要以下技术:JavaScript赋予网页动态和交互性,通过操作DOM实现实时变化。CSS负责网页的样式和布局,提升美观度和用户体验。现代框架和库如React、Vue.js和Angular,提高开发效率和代码组织结构。

HTML中的布尔属性是什么?举一些例子。HTML中的布尔属性是什么?举一些例子。Apr 25, 2025 am 12:01 AM

布尔属性是HTML中的特殊属性,不需要值即可激活。1.布尔属性通过存在与否控制元素行为,如disabled禁用输入框。2.它们的工作原理是浏览器解析时根据属性的存在改变元素行为。3.基本用法是直接添加属性,高级用法可通过JavaScript动态控制。4.常见错误是误以为需要设置值,正确写法应简洁。5.最佳实践是保持代码简洁,合理使用布尔属性以优化网页性能和用户体验。

如何验证您的HTML代码?如何验证您的HTML代码?Apr 24, 2025 am 12:04 AM

HTML代码可以通过在线验证器、集成工具和自动化流程来确保其清洁度。1)使用W3CMarkupValidationService在线验证HTML代码。2)在VisualStudioCode中安装并配置HTMLHint扩展进行实时验证。3)利用HTMLTidy在构建流程中自动验证和清理HTML文件。

HTML与CSS和JavaScript:比较Web技术HTML与CSS和JavaScript:比较Web技术Apr 23, 2025 am 12:05 AM

HTML、CSS和JavaScript是构建现代网页的核心技术:1.HTML定义网页结构,2.CSS负责网页外观,3.JavaScript提供网页动态和交互性,它们共同作用,打造出用户体验良好的网站。

HTML作为标记语言:其功能和目的HTML作为标记语言:其功能和目的Apr 22, 2025 am 12:02 AM

HTML的功能是定义网页的结构和内容,其目的在于提供一种标准化的方式来展示信息。1)HTML通过标签和属性组织网页的各个部分,如标题和段落。2)它支持内容与表现分离,提升维护效率。3)HTML具有可扩展性,允许自定义标签增强SEO。

HTML,CSS和JavaScript的未来:网络开发趋势HTML,CSS和JavaScript的未来:网络开发趋势Apr 19, 2025 am 12:02 AM

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器