最新要闻
- 全球快看:你肯定达标了?31省份最低工资表公布:上海第一 超2500元
- 热议:29岁男子身高2.89米成世界上最高的人:还在生长中!
- 焦点快看:因14 Plus销量太差 曝苹果将对iPhone 15 Plus价格大调整
- 环球头条:超14亿美元!《阿凡达2》票房达到回本线 你贡献了几张票?
- 世界快看:3G CDMA再见!美国运营商关闭 中国电信也快关闭了
- 新消息丨苹果中国不手软:iPhone 14之前机型保修费大涨 700元换块电池
- 美好午餐肉罐头促销:5盒不到20元 味道鲜美入口留香
- 世界热门:电竞圈说的“满血”到底是啥 真能带来游戏体验升级?实测揭秘真相
- 女子花2700修热水器:成本只有13元
- 当前速读:今天是卢伟冰入职小米4周年!卢伟冰想起4年前雷军说过的话
- 取暖电器火了!成为老外眼中的香饽饽
- 天天看点:根治安卓卡顿!一加11超21万人预约:本周发
- 蔚来2022年累计交付新车122486辆 明年目标超雷克萨斯
- 速讯:微软吹大了!Win11流畅度没那么神:Office/PS还没Win10快
- 实时焦点:女子跨年夜捡烟花废品赚552元 一晚上捡了920斤:网友叹服人勤劳怎么都赚钱
- 2023油价新年第一涨来了:我国汽油全面进入国六B时代 油品质量不缩水
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界观焦点:解放生产力!一文教你快速入门正则表达式
一、概述
正则表达式一般用于文本内容的查找和替换,在日常工作中还可用来校验用户的输入是否符合自定义的规则。
正则表达式是匹配模式
,要么匹配字符
,要么匹配位置
。
(资料图片仅供参考)
正则表达式不要背二、基本语法
单个字符 | 数量 | 位置 |
---|---|---|
\d 匹配数字 | * 0 个或者更多 | ^一行的开头 |
\w 匹配 word(数字、字母) | + 1 个或更多,至少 1 个 | $ 一行的结尾 |
\W 匹配「非」word(数字、字母) | ? 0 个或 1 个,一个 Optional | \b 单词"结界"(word bounds) |
\s 匹配 white space(包括空格、tab 等) | {min,max}出现次数在一个范围内 | ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。 |
\S 匹配「非」white space(包括空格、tab 等) | {n}匹配出现 n 次的 | { 标记限定符表达式的开始。要匹配 {,请使用 {。 |
. 匹配任何,任何的字符 | |指明两项之间的一个选择。要匹配 |,请使用 \| |
「[ ]」定义一个字符集合
- 0-9、a-z 定义了一个「字符区间」,区间使用 ASCII 码来确定,字符区间在 [ ] 中使用。若没有-连字符,则取的雨元素从[ ]中取
- 「在[]中,特殊字符不需要转义,可以直接使用」
- 「^」在 [ ] 中是取非操作。
「常见示例:」
- 身份证号(15 位、18 位数字),最后一位是校验位,可能为数字或字符 X:**(^\d15}$)(^\d{18)**
- 数字:**^[0-9]\*$**
- 中文字符的正则表达式:**[\u4e00-\u9fa5]**
- Email 地址:**^\w+([-+.]\w+)\@\w+([-.]\w+)\.\w+([-.]\w+)\*$**
「修饰符」
下表列出了正则表达式常用的修饰符:
修饰符 | 含义 | 描述 |
---|---|---|
i | ignore - 不区分大小写 | 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。 |
g | global - 全局匹配 | 查找所有的匹配项。 |
m | multi line - 多行匹配 | 使边界字符 「^」和 「$」匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。 |
s | 特殊字符圆点 「.」中包含换行符 「\n」 | 默认情况下的圆点 「.」是匹配除换行符 「\n」之外的任何字符,加上 「s」修饰符之后, 「.」中包含换行符 \n。 |
「示例」
varstr="Googlerunoobtaobaorunoob";varn1=str.match(/runoob/);//查找第一次匹配项varn2=str.match(/runoob/g);//查找所有匹配项varstr="runoobgoogle\ntaobao\nrunoobweibo";varn1=str.match(/^runoob/g);//匹配一个varstr="google\nrunoob\ntaobao";varn1=str.match(/google./);//没有使用s,无法匹配\nvarn2=str.match(/runoob./s);//使用s,匹配\nvarn2=str.match(/^runoob/gm);//多行匹配
三、子表达式
使用 「( )」定义一个子表达式。子表达式的内容可以当成一个独立元素,即可以将它看成一个字符,并且使用 * 等元字符。
子表达式可以嵌套,但是嵌套层次过深会变得很难理解。
「正则表达式」
(ab){2,}
「匹配结果」
ababab
「|」是或元字符,它把左边和右边所有的部分都看成单独的两个部分,两个部分只要有一个匹配就行。
「正则表达式」
(19|20)\d{2}
「匹配结果」
1.19002.20103.1020
「应用」
匹配 IP 地址。
IP 地址中每部分都是 0-255 的数字,用正则表达式匹配时以下情况是合法的:
- 一位数字
- 不以 0 开头的两位数字
- 1 开头的三位数
- 2 开头,第 2 位是 0-4 的三位数
- 25 开头,第 3 位是 0-5 的三位数
「正则表达式」
((25[0-5]|(2[0-4]\d)|(1\d{2})|([1-9]\d)|(\d))\.){3}(25[0-5]|(2[0-4]\d)|(1\d{2})|([1-9]\d)|(\d))
「匹配结果」
1.192.168.0.12.00.00.00.003.555.555.555.555
四、回溯引用
回溯引用使用 「\n」来引用某个子表达式,其中 n 代表的是子表达式的序号,从 1 开始。它和子表达式匹配的内容一致,比如子表达式匹配到 abc,那么回溯引用部分也需要匹配 abc 。
「应用」
匹配 HTML 中合法的标题元素。
「正则表达式」
\1 将回溯引用子表达式 (h[1-6]) 匹配的内容,也就是说必须和子表达式匹配的内容一致。
<(h[1-6])>\w*?<\/\1>
「匹配结果」
1.x
2.x
替换
需要用到两个正则表达式。
「应用」
修改电话号码格式。
「文本」
313-555-1234
「查找正则表达式」
(\d{3})(-)(\d{3})(-)(\d{4})
「替换正则表达式」
在第一个子表达式查找的结果加上 () ,然后加一个空格,在第三个和第五个字表达式查找的结果中间加上 - 进行分隔。
($1)$3-$5
「结果」
(313)555-1234
大小写转换
元字符 | 说明 |
---|---|
\l | 把下个字符转换为小写 |
\u | 把下个字符转换为大写 |
\L | 把\L 和\E 之间的字符全部转换为小写 |
\U | 把\U 和\E 之间的字符全部转换为大写 |
\E | 结束\L 或者\U |
「应用」
把文本的第二个和第三个字符转换为大写。
「文本」
abcd
「查找」
(\w)(\w{2})(\w)
「替换」
$1\U$2\E$3
「结果」
aBCd
五、前后查找
前后查找规定了匹配的内容首尾应该匹配的内容,但是又不包含首尾匹配的内容。
向前查找使用 「?=」定义,它规定了尾部匹配的内容,这个匹配的内容在 ?= 之后定义。所谓向前查找,就是规定了一个匹配的内容,然后以这个内容为尾部向前面查找需要匹配的内容。向后匹配用 ?<= 定义(注: JavaScript 不支持向后匹配,Java 对其支持也不完善)。
「应用」
查找出邮件地址 @ 字符前面的部分。
「正则表达式」
\w+(?=@)
「结果」
「abc」@qq.com
对向前和向后查找取非,只要把 = 替换成 ! 即可,比如 (?=) 替换成 (?!) 。取非操作使得匹配那些首尾不符合要求的内容。
六、嵌入条件
回溯引用条件
条件为某个子表达式是否匹配,如果匹配则需要继续匹配条件表达式后面的内容。
「正则表达式」
子表达式 ( \ ( ) 匹配一个左括号,其后的 ? 表示匹配 0 个或者 1 个。 ?(1) 为条件,当子表达式 1 匹配时条件成立,需要执行 ) 匹配,也就是匹配右括号。
(\()?abc(?(1)\))
「结果」
1.(abc)2.abc3.(abc
前后查找条件
条件为定义的首尾是否匹配,如果匹配,则继续执行后面的匹配。注意,首尾不包含在匹配的内容中。
「正则表达式」
?(?=-) 为前向查找条件,只有在以 - 为前向查找的结尾能匹配 \d{5} ,才继续匹配 -\d{4} 。
\d{5}(?(?=-)-\d{4})
「结果」
1.111112.22222-3.33333-4444
世界观焦点:解放生产力!一文教你快速入门正则表达式
全球快看:你肯定达标了?31省份最低工资表公布:上海第一 超2500元
热议:29岁男子身高2.89米成世界上最高的人:还在生长中!
JavaWeb学习笔记
焦点快看:因14 Plus销量太差 曝苹果将对iPhone 15 Plus价格大调整
环球头条:超14亿美元!《阿凡达2》票房达到回本线 你贡献了几张票?
世界快看:3G CDMA再见!美国运营商关闭 中国电信也快关闭了
新消息丨苹果中国不手软:iPhone 14之前机型保修费大涨 700元换块电池
即时焦点:tclap库的使用
美好午餐肉罐头促销:5盒不到20元 味道鲜美入口留香
天天新资讯:MySQL——基础架构
Python类与对象详解
【环球热闻】Python重用父类方法
Python类的封装教程
世界热门:电竞圈说的“满血”到底是啥 真能带来游戏体验升级?实测揭秘真相
女子花2700修热水器:成本只有13元
docker复杂安装
热点在线丨AcWing1170. 排队布局[USACO05]
当前速读:今天是卢伟冰入职小米4周年!卢伟冰想起4年前雷军说过的话
取暖电器火了!成为老外眼中的香饽饽
看点:docker安装软件
天天看点:根治安卓卡顿!一加11超21万人预约:本周发
蔚来2022年累计交付新车122486辆 明年目标超雷克萨斯
速讯:微软吹大了!Win11流畅度没那么神:Office/PS还没Win10快
实时焦点:女子跨年夜捡烟花废品赚552元 一晚上捡了920斤:网友叹服人勤劳怎么都赚钱
2023油价新年第一涨来了:我国汽油全面进入国六B时代 油品质量不缩水
全球微动态丨2022年第一票房是《壮志凌云2》 阿汤哥驾F14胜5代战机的爽片赢下全球影迷
全球播报:JDBC
Maven基础
【天天新要闻】Redmi 12C只卖699元:但支持双频WiFi 还有3.5mm耳机孔和TF卡槽
当前信息:三亚近期酒店房间几乎售罄:飞机上坐满了人
世界通讯!摄影师对小米13 Pro长焦刮目相看:原本不抱希望 但实际效果令人意外
世界消息!一加11本周发!李杰:一部你越用越爱、越用越惊喜的手机
实时焦点:甘肃省高速公路实施差异化收费 绿牌新能源最高能省50%过路费
焦点短讯!女子接触发霉玉米肺里长黄曲霉菌 没戴口罩防护:医生科普毒性超强
特斯拉美国遭起诉:违反劳动法
焦点简讯:1TB+ SSD固态盘继续便宜 用户消费不动:微软背锅
当前快讯:东北500米超长冰滑梯走红!世界最长“出溜滑”:1秒10米风驰电掣
动态焦点:一招轻松解决node内存溢出问题
环球视讯!2020年“老卡”姗姗来迟:映泰突然推出RTX 3080/3070非公显卡
世界聚焦:PG认证的注意事项 (这很重要!)
【全球聚看点】《原神》赚麻了!推出2年移动端收入超过275亿元
视讯!3人同时订酒店价格相差1倍 去哪儿回应:正常 因素有很多
观天下!Django中间件
环球看点!造车新势力第一!2022年埃安累计销量27.1万辆 明年冲击60万辆
热头条丨Django组件之form组件
全球观察:索尼音乐在B站传了17万个视频 网友:当免费服务器了
当前时讯:比亚迪技术加持 创维汽车2022年总销量21916台 暴增255.72%
天天日报丨复兴号新动车元旦首秀:红白灰绿四色机身成“网红”车型
N95有效防护时间为4到6小时:和戴普通口罩效果有什么区别?
Django组件之Ajax请求
视焦点讯!RTX 4070 Ti完整规格、性能曝光:4090一半性能、一半的价格
新年快乐!今天遇到一个问题:3个鸡蛋5元,6个鸡蛋多少钱?
iPhone 15 mini重出江湖?苹果把这几个功能加上卖爆
世界热文:蒙脱石散为啥突然火了?医生提醒:不要乱用 小心便秘
今日快讯:关于使用boto3方式获取AWS-所有EC2-机型及属性时所遇到的结果返回不全的坑点及使用分布机制的解决方法
世界快讯:web项目开发---第三天
环球关注:1月4日发布!一加11官宣搭载双环式对磁扬声器:支持杜比全景声
世界讯息:新能源补贴正式终止!小鹏宣布:2023年各车型售价与补贴后一致
MAUI新生6.6-搜索栏SearchHandler
今日热搜:岚图汽车12月交付1729辆 大增14.7%!全年累计交付19409辆
每日焦点!得到跨年演讲2023
环球微速讯:《阿凡达2》成第100部内地票房破10亿电影:当年《阿凡达1》是第1部
Django模板层
今日看点:外观帅炸了!阿富汗首款国产跑车随风雪亮相喀布尔
《王者荣耀》盘古即将获得品质升级:上手难度大幅下降
每日短讯:跨年夜无人机被气球缠绕坠落人群 引发一阵惊呼
【世界热闻】从系统整体观思考系统构建
大年初一上映!《流浪地球2》微笑海报发布:主创全员出镜
2023全年油价调整时间表出炉:1月3日第一调 要涨
AcWing362. 区间
最新消息:你看过几场?2022年国内电影总票房超300亿
即时焦点:必囤:百草味年货坚果大礼包1370g/8袋仅49元
微速讯:特斯拉拼了:其他品牌车辆置换特斯拉 3.2万元功能免费用90天
全球首架国产大飞机C919新年首飞:验证飞行将达100小时
每日快看:全球最大第三方Android系统!基于Android 13的LineageOS 20正式发布
全球今头条!联想新款迷你主机M60Q官宣:厚度仅3.4厘米 可选12代i5
当前简讯:2023大事前瞻:杭州亚运会9月举办 首次纳入电竞比赛项目
热头条丨日本外卖小哥晒收入:月入合人民币5.5万元
观察:MYSQL安装教程及sqlyog初次使用
全球焦点!80秒看全球跨年烟火秀:用璀璨夜空迎接2023 你那能放烟花吗
【天天热闻】中国汽车保有量超3亿辆 千人拥有量达220辆 已成普通家庭消费品
搜索页上全是广告和推荐?用这插件一键去除
播报:新规即日起开始执行!手机预装App终于可以卸载了
苹果4GB内存为何能击败安卓12GB?历代iPhone内存容量公布:最大不过6GB
每日热议!铁路新规今日起施行:实名制儿童火车票将按照年龄购买 不看身高
焦点热讯:MAUI新生6.5-导航路由Navigation
每日资讯:Intel带着56核心再次发烧!新座驾降临 能插16条内存
环球头条:大批192号段诈骗电话出现!中国广电发布提醒:电商客服不会用192
热文:一项大奖的所有得主:都没有后代 为什么呢?
动态焦点:SpaceX预告2023年第一发:一箭114星!超越印度新纪录
要再见了!《魔兽世界》临时充值渠道将于1月1日0点正式关闭
詹姆斯生日夜狂砍47分!杜兰特盛赞其表现:神迹!
第119篇: JavaScript 类
天天速递!仅仅10年 中国在西部修了2.5万公里铁路
【天天聚看点】直播央视2023跨年晚会:明星阵容豪华、两大运动员登台
3999元 LG新款27英寸显示器开售:搭载4K Nano IPS Black屏
2423公里!曾经的中国西部最长铁路 开通60年了
焦点热门:妈妈给儿子读英语 发音如原声磁带!6岁孩子开口惊人
玩家吐槽《塞尔达传说:王国之泪》NS限定机太丑:希望不是真的