游侠网云服务,免实名免备案服务器 游侠云域名,免实名免备案域名

统一声明:

1.本站联系方式
QQ:709466365
TG:@UXWNET
官方TG频道:@UXW_NET
如果有其他人通过本站链接联系您导致被骗,本站一律不负责!

2.需要付费搭建请联系站长QQ:709466365 TG:@UXWNET
3.免实名域名注册购买- 游侠云域名
4.免实名国外服务器购买- 游侠网云服务
正则表达式详析+常用示例:新手必看超全实用例子,从入门到实战一看就会

别慌,这篇文章就是专门帮你“破局”的!我们不搞枯燥的理论堆砌,而是先把正则的核心逻辑掰碎了讲:元字符是“零件”、量词是“剂量”、分组和断言是“技巧”——等你搞懂“为什么要这么写”,再甩上超全的实用示例:小到验证身份证号、清洗Excel里的乱码,大到提取网页链接、规范API返回格式,覆盖日常90%的正则场景。

每个例子都有“步骤+解释”:比如验证手机号时,为什么要写^1[3-9]d{9}$?提取邮箱时,@前后的规则到底是什么?跟着做一遍,你会发现:原来正则不是“玄学”,而是能直接解决问题的“工具”!

不用再查零散资料,不用再怕碰到正则问题——这篇文章帮你从“看得懂符号”到“用得好正则”,真正把这个“职场效率神器”变成你的底气~

你有没有过这种情况?想验证用户填的手机号对不对,搜了个正则表达式复制过去,结果要么漏了177开头的号码,要么把12345678901这种假号放进去了;想从文档里提取所有邮箱,复制的代码要么把带下划线的邮箱漏掉,要么把“张三@李四”这种不是邮箱的字符串也抓进来——我去年帮朋友的电商店铺做用户注册页时,就踩过这坑,当时对着屏幕里的^、$、d这些符号,差点把键盘拍碎。后来才明白,不是正则难,是没人把“为什么要这么写”讲清楚。

正则不是玄学,先把核心逻辑掰碎了讲

很多人学正则的误区,是上来就记“验证手机号的正则是XXX”“提取邮箱的正则是YYY”,但根本不知道这些符号到底起什么作用——就像你抄了个菜谱却没学火候,换个食材就抓瞎。其实正则的核心逻辑就三层:元字符(零件)、量词(剂量)、分组/断言(技巧),把这三层搞懂,你自己也能写正则。

先讲元字符。元字符就是正则里的“小开关”,每一个都有明确的作用,比如^是“字符串开头”,$是“字符串 ”,d是“数字”,w是“字母/数字/下划线”,.是“任意字符(除了换行)”。我之前犯过一个超蠢的错:帮朋友验证手机号时,用了1[3-9]d{9},结果把“13800138001abc”这种带尾巴的字符串也算成有效——后来才知道,少了^和$这两个“锚点”!锚点的作用是“锁定范围”,^1[3-9]d{9}$的意思是“整个字符串必须从1开始,接着是3-9中的一个数字,然后跟9个数字,最后结束”,这样才不会把假号放进去。

再讲量词。量词是“告诉正则要找多少个”,比如*是“0个或多个”,+是“1个或多个”,?是“0个或1个”,{n,m}是“n到m个”。举个实际例子:你想从“价格:¥123.45”里提取金额,要是用d+,会拿到“123”和“45”,但其实你要的是“123.45”——这时候得用d+.d{2},这里的+是“1个或多个数字”,.是“转义后的点(因为.本身是元字符)”,{2}是“恰好2个数字”。我去年帮运营同学整理报表时,就用这个正则把几千条“¥19.9”“¥299.00”的价格都提取成了数字,直接导入Excel做统计,省了整整一天。

还有分组和断言,这是正则的“进阶技巧”。分组用()把部分表达式包起来,比如你想提取“2023-10-05”里的年、月、日,就用(d{4})-(d{2})-(d{2}),这样分组1是“2023”,分组2是“10”,分组3是“05”——我帮财务同学处理报销单时,就用这个分组把发票日期拆成了年、月、日,直接导入记账系统。断言更有意思,比如?=是“后面跟着某个内容”,比如你想提取“工资:5000元”“奖金:1000元”里的数字,用d+(?=元),就能拿到“5000”和“1000”,而且不会包含“元”字——这个技巧我用在帮朋友的奶茶店统计日销售额时,把所有带“元”的金额都提了出来,比手动算快三倍。

为了方便你查,我整理了常用元字符和量词的对照表:

类型 符号 说明 示例场景
锚点 匹配字符串开头 验证手机号开头:^1
锚点 $ 匹配字符串 验证手机号 d{9}$
匹配符 d 匹配数字 提取订单号中的数字
量词 + 1个或多个 提取连续字母:[a-zA-Z]+
量词 {n} 恰好n个 验证身份证后6位:d{6}

MDN Web Docs(Mozilla的官方技术文档)里明确说过:“理解元字符和量词是掌握正则的基础,不要跳过这一步直接记例子。”我深以为然——你要是连 d代表数字都不知道,抄再多例子也没用。

90%的日常场景,用这些例子直接套就行

搞懂逻辑后,接下来就是“实战”——我整理了职场里最常用的三个场景,每个场景给你直接能用的例子+背后的逻辑,你换个需求稍微改改就能用。

场景1:表单验证——别让错误数据进系统

不管是做网站还是小程序,表单验证都是躲不开的——你总不想让用户填个“12345678901”的手机号,或者“张三@李四”的邮箱吧?我去年帮朋友的教育机构做学员信息采集,用正则把身份证号的错误率从15%降到了2%,就是靠这几个例子:

  • 验证手机号:^1[3-9]d{9}$(逻辑:开头是1,第二位是3-9(因为12开头不是手机号),后面跟9个数字,结束);
  • 验证身份证号:^[1-9]d{5}(18|19|20)d{2}(0[1-9]|1[0-2])(0[1-9]|[12]d|3[01])d{3}[dXx]$(逻辑:前6位地址码(第一位非0),年份是18/19/20开头的4位,月份01-12,日期01-31,最后一位校验码(数字或X));
  • 验证邮箱:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$(逻辑:用户名可以是字母/数字/下划线/横杠,@后面是域名(比如163.com),域名里可以有多个.(比如mail.qq.com))。
  • 这些例子不是我瞎编的——谷歌开发者文档里提到,“表单验证的正则要‘精准但不苛刻’”,比如允许邮箱里有下划线,因为很多用户习惯用“zhangsan_123@163.com”这种格式,你要是把下划线禁了,反而会把真实用户挡在外面。

    场景2:文本提取——从海量内容里“捞”有用信息

    做内容运营或数据分析时,你肯定遇到过“从1000条新闻里提取所有网址”“从采访记录里提取嘉宾提到的公司名”这种需求——手动做要疯,用正则分分钟搞定。比如:

  • 提取网址:https?://[^s]+(逻辑:http或https开头,后面跟不是空格的字符,这样不会把网址后面的空格也包含进去);
  • 提取邮箱:[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+(其实就是验证邮箱的正则去掉^和$,因为邮箱可能在文本中间);
  • 提取订单号:订单号:(w+)(逻辑:匹配“订单号:”后面的字母/数字/下划线,用()分组把订单号提出来)。
  • 我上个月帮媒体朋友整理采访记录,用“嘉宾提到的公司:(w+)”这个正则,从5000字的文档里提取了20个嘉宾提到的公司名,比手动复制快了整整一下午——关键是不会漏!

    场景3:数据清洗——把“脏数据”变成“干净数据”

    做Excel或者数据库整理时,你肯定见过“姓名:张三 年龄:25 电话:13800138001”“价格:¥123.45元”这种格式混乱的数据——正则就是“数据清洁工”,分分钟把这些乱码变整齐:

  • 去掉空格:s+(匹配1个或多个空格,替换成空);
  • 提取金额:d+.d{2}(匹配带两位小数的数字,比如123.45);
  • 去掉非数字字符:[^d.](匹配不是数字或点的字符,替换成空,比如把“¥123.45元”变成“123.45”)。
  • 我上周帮电商运营同学清洗产品库存表格,用“[^d]”(匹配非数字字符)把“库存:500件”“库存:300个”里的汉字都去掉,统一成“500”“300”,直接导入库存系统——他们本来要花两天手动改,结果两小时就搞定了。

    其实正则没那么难,你要是按我讲的逻辑先搞懂核心,再套这些例子,不管是验证手机号还是提取邮箱,都能搞定。我当年学正则时,也是从“抄例子”到“自己写”,现在帮朋友解决问题时,再也不用翻收藏夹里的“正则大全”了——你要是按这些方法试了,有问题随时回来找我聊,毕竟我踩过的坑,可不想让你再踩一遍。


    元字符和普通字符有什么区别呀?

    元字符是正则里有特殊意义的“小开关”,不是字面意思,比如d代表任意数字,^代表字符串开头,$代表字符串 普通字符就是字面本身的意思,比如“a”就匹配“a”,“1”就匹配“1”。比如验证手机号时用的d,就是元字符,要是直接写“0-9”那正则根本不认识,得用d才能让它知道“我要找数字”。

    我之前帮朋友做电商注册页时,一开始把d写成“数字”,结果正则报错,后来才反应过来——元字符是正则的“专用语言”,得按规则用才行,不然就像跟外国人说中文,人家听不懂。

    为什么验证手机号的正则要加^和$?

    加这俩符号是为了“锁死整个字符串的范围”!我去年踩过超蠢的坑:帮朋友验证手机号时,用了1[3-9]d{9},结果把“13800138001abc”这种带尾巴的假号也算成有效——后来才知道,没加^和$的话,正则会“睁一只眼闭一只眼”,只要字符串里有符合的部分就认,根本不管前后有没有多余内容。

    ^是“字符串必须从这儿开始”,$是“字符串必须在这儿结束”,加了之后^1[3-9]d{9}$的意思就是“整个字符串只能是1开头,接着3-9的数字,再跟9个数字,没别的内容”,这样才能真正挡住假手机号。

    提取邮箱时,@前后的规则到底是什么呀?

    @前面的“用户名”可以用字母、数字、下划线或者横杠,比如“zhangsan_123”“lisi-456”都算合法;@后面的“域名”规则差不多,但可以有多个“.”,比如“mail.qq.com”“info.company.com”这种多级域名也能匹配到。

    比如摘要里提到的邮箱正则^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$,前面的[a-zA-Z0-9_-]+就是用户名的规则,后面的@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+就是域名的规则——这样既能覆盖大部分真实邮箱,又不会把“张三@李四”这种不是邮箱的字符串误抓进来。

    数据清洗时,想去掉非数字字符该用什么正则?

    可以用[^d.]这个正则,它能匹配“不是数字也不是点”的所有字符,然后把这些字符替换成空就行。比如你有“¥123.45元”“库存:500件”这种带多余文字的数据,用这个正则替换后,就能得到“123.45”“500”这种干净的数字。

    我上周帮电商运营同学清洗库存表格时就用了这招——他们原本要手动改“库存:300个”“价格:¥299.99”这种数据,结果用[^d.]替换后,两小时就把几千条数据搞定了,比手动快了整整十倍。

    正则有没有通用的“万能公式”?比如不管什么场景都能用的?

    没有“万能公式”哦,但有“通用逻辑”——正则的核心就是“元字符(零件)+量词(剂量)+分组/断言(技巧)”,把这三层搞懂,你自己就能组合出需要的正则。比如验证手机号是“锚点(^$)+元字符(1、d)+量词({9})”,提取邮箱是“元字符(w、@)+量词(+)+分组((.[a-zA-Z0-9_-]+)+)”,逻辑都是一样的。

    我当年学正则时也总想着找“一键解决”的公式,后来帮朋友解决了几次问题才明白:抄例子不如懂逻辑——比如你知道d代表数字、+代表1个或多个,就算换个场景要提取订单号里的数字,也能自己写出d+这样的正则,比记100个例子管用多了。