十个值得珍藏的正则表达式
创始人
2024-04-13 07:27:48
0

正则表达式常学常忘,记规则不如记例子,记多不如记精,记例子就记最经典的。下面是本人珍藏的十个有用的正则表达式,不吝分享,以飨读者。

正则表达式要点

在这里插入图片描述

几个记忆点

  • 小括号:代表分组
  • 中括号:代表集合
  • 大括号:代表个数
  • 尖括号不是元字符,下划线不是元字符,但破折号是
  • \s和\S, \b和\B, \w和\W的是三对对偶子,“小正大否”, 也就是小写的表示匹配,大写的表示不匹配。 \s匹配任何空白字符,\b匹配单词边界,\w匹配单词,对应的大写字母刚好反之。

实例

下面以javascript语言为例,展示正则表达式的经典例子,基本覆盖了基本用法。

1. 多个空行变成单空行

经常遇到别人给的文本文件,里面出现多个空行,一般IDE格式化也无能为力,怎么办?正则表达式可以派上用场。

let lines = `
djaidjsia
lllds
daskldas
dasdlasdaskldakaskldsad
`
// str = lines.replace(/^(\s*\n){2,}/, "\n")
str = lines.replace(/^\s*[\r\n]|^\s+| +(?= )| +$|\s+$(?![^])/gm, '\n');
console.log(str)

在IntelliJ idea里可以运用上述表达式做全局替换。

2. 符合强度的密码

长度8到18位,至少1个字母,1个数字和1个特殊字符

/^(?=.\d)(?=.[a-z])(?=.[A-Z])(?=.[!@#KaTeX parse error: Expected group after '^' at position 1: ^̲&*()_-]).{8,18}/

在这里插入图片描述

3. 有效的身份证号码(十八位)

十八位的公民身份号码,排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

var pattern = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
console.log(p.test("11010519501130002X"));

4. 提取网页中所有超链接


(?i)]+)>(.+?)说明:
?i表示大小写敏感,[^>]+表示匹配任何字符串,但不包含>

5. 匹配HTML标签

<("[^"]*"|'[^']*'|[^'">])*><	  	#start with opening tag "<"(		#   start of group #1"[^"]*"	#	only two double quotes are allow - "string"|		#	..or'[^']*'	#	only two single quotes are allow - 'string'|		#	..or[^'">]	#	cant contains one single quotes, double quotes and ">")		#   end of group #1*		# 0 or more
>		#end with closing tag ">"
>

6. 匹配IP地址

^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.
([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$

7. 检查Email地址

\b[\w.!#$%&’*+\/=?^`{|}~-]+@[\w-]+(?:\.[\w-]+)*\b

8. 不包含字符串

不包含hello:

var pattern = /^((?!hello).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))

不包含hello,也不包含world:

pattern = /^((?!hello)(?!world).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))

9. 检查中文和CJK字符(中日韩字符)

指定中文的unicode编码区间来匹配中文:

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

检查CJK字符,采用:

([\u4e00-\u9fff]+|[\uff00-\uffef]+)

同理,还可以指定字符的unicode编码来匹配货币代码:

(?=.*\d+)(?=.*[\u00A5\uFFE5\uFFE1\u5713\uFF04\u20A4\u0024\u5186]+)

10. 匹配十六进制数

/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i

在这里插入图片描述

总结

太史公曰:正则表达式是程序员手中的利剑,能解决许多人生中不大不小的烦恼。不会正则表达式不足语编程。有这十个正则表达式防身,没人再敢欺负你。

相关内容

热门资讯

诉讼纠纷频发!中央商场子公司又... 继控股子公司新亚百货面临补缴税款及滞纳金7392万元后,百货零售巨头中央商场(600280.SH)另...
从明天起,楼市迎来两大利好政策... 作者:暴哥 来源:暴财经pro 同志们,2025年要过去了! 今年,各位在股市里应该收获不少,把过去...
国台办回应台湾网红“馆长”大陆... 12月31日,国台办举行例行新闻发布会,国台办发言人张晗就近期两岸热点问题回答记者提问。 有记者提问...
中钢天源:股东中钢热能院907... 雷达财经 文|冯秀语 编|李亦辉 12月30日,中钢天源(证券代码:002057)发布公告称,其控股...
宇树科技因侵权责任纠纷案件被起... 天眼查法律诉讼信息显示,近日,杭州宇树科技股份有限公司及邵某新增1条开庭公告,原告为孙某,涉及侵权责...
今日视点:“制度创新+科技突破... 2025年,A股市场交易活跃度持续提升。截至12月30日,全年累计成交金额达417.8万亿元,同比增...
专业文章丨第二顺位抵押权人实现... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师郑州律师事...
企业就网络谣言报案并追究法律责... 2025-12-31 09:41:29 作者:狼叫兽 声明指出,目前相关网络平台已对上述不实信息进...
2026年1月份库伦旗党政领导... 为深入学习贯彻习近平总书记关于加强和改进人民信访工作的重要思想,坚持和发展新时代“枫桥经验”“浦江经...
商务部:各地可在消费品以旧换新... 商务部等7部门近日联合印发《关于提质增效实施2026年消费品以旧换新政策的通知》。商务部消费促进司负...