浅说正则——会了就不会忘

闲来无事,看了看新浪最近的面试题,其中关于正则的题目,让自己意识到了这一块的薄弱。

闲来无事,搜集了很多资料(ps:三中全会这几天,用google特慢,不得以用bd,不说了,你懂得,真实屌丝的百科全书,建议能用google就google),研究了一下正则。有一些小感触,正则没有你想象中那么难,正则不是那么简单。

记得有位贵人告诉我,正则会了就不会忘。当时将信将疑。

怎么看待正则?难,不难,很容易?对于正则,我想说:会了就不会忘。

很多同行,包括之前的自己。对于正则都是拿来主义,用到的时候,一搜就有。大体上能看懂,深究有不明白。就是那句话恰到好处——最熟悉的陌生人。

关于正则的基础知识,就没必要赘述,到处都是。

这里主要想说的是电子邮箱地址的正则匹配。

下面的写法最常见:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/ ;

还有诸如:/^(\w)+(.\w+)*@(\w)+((.\w{2,3}){1,3})$/;

/^(\w)+(.\w+)*@(\w)+((.\w+)+)$/;

(\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+);)

这些都只能满足普通的要求,专门对比了一下几个门户的邮箱地址注册规则,见下图(腾讯的不太友好,输入后才有规则提示,没有拿来):

差别真的很大,网上的很多也不满足如写的域名规则:

尝试着写的一个电子邮件验证,希望大家拍砖:$preg = “/^[a-zA-Z0-9]+(.\w+)*[^_]@[^-][a-zA-Z0-9-]+[^-].[^-][a-zA-Z0-9-]+[^-]$/”

做为一名工程师,要得就是专业,而正则就是专业性的体现。多花一点时间,深入钻研, 会了就不会忘。

Original: https://www.cnblogs.com/james1207/p/3424255.html
Author: Class Xman
Title: 浅说正则——会了就不会忘

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552085/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Mybatis源码4 Cache的实现和其原理

    Mybatis CachingExecutor, 二级缓存,缓存的实现 一丶二级缓存概述 上一章节,我们知道mybaits在构造SqlSession的时候,需要让SqlSessio…

    技术杂谈 2023年7月25日
    092
  • Spring 中使用 @Scheduled 创建定时任务

    一、定时任务触发条件 1、在 Application 启动类上添加:@EnableScheduling 2、含定时方法的类上添加注解:@Component,该注解将定时任务类纳入 …

    技术杂谈 2023年7月25日
    0112
  • 重载运算符

    struct node { int a,b; }; bool operator const node &x,const node &y) { return x.a&…

    技术杂谈 2023年6月22日
    0104
  • 一次IOS通知推送问题排查全过程

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 发现问题 在上周一个将要下班的夜晚,测试突然和我打招呼,说IOS推送的修复更新上线后存在问题,后台报…

    技术杂谈 2023年7月25日
    0148
  • python 格式化 小数

    python;gutter:true;</p> <blockquote> <blockquote> <blockquote> &lt…

    技术杂谈 2023年7月11日
    0101
  • 使用freemarker对模板进行渲染

    public class FreemarkerUtilsTest extends TestCase {public void generateStringTest(){Map&lt…

    技术杂谈 2023年6月1日
    0122
  • 016 Linux 卧槽,看懂进程信息也不难嘛?top、ps

    1 扒开看看 top 命令参数详情 第一行,[top – ]任务队列信息 第二行,[Tasks] 任务(进程) 第三行,[Cpu(s)]状态信息 第四行,[Mem]内存…

    技术杂谈 2023年7月10日
    0151
  • Redis命令操作_常用命令和Redis持久化

    通用命令 keys * 查询所有的键 type key:获取键对应的value的类型 del key:删除指定的key clear:清除窗口所有内容 127.0.0.1:6379&…

    技术杂谈 2023年6月21日
    0131
  • Vue-cli介绍

    vue基本语法非常容易理解,如果在接触vue之前,接触过微信小程序,基本可以说轻车熟路.反过来也是如此. vue 之所以强大切易用离不开vue-cli\vue-router\vue…

    技术杂谈 2023年7月11日
    081
  • Dubbo与SpringBoot整合

    1.选择ZooKeeper作为注册中心 在linux环境中使用docker安装ZooKeeper //拉取zookeeper镜像 docker pull zookeeper//启动…

    技术杂谈 2023年7月24日
    095
  • Redis

    一、Redis的介绍 什么是Redis Redis是一个开源的使用ANSI C语言编写Key-Value内存数据库 读写性能强,支持多种数据类型 把数据存储在内存中的高速缓存 Re…

    技术杂谈 2023年7月11日
    0119
  • 设计模式之二十一:中介者模式(Mediator)

    中介者模式:定义了一个对象。用来封装一系列对象的交互。中介者模式通过使对象之间不必显式引用减少了对象之间的耦合,而且同意你独立改变它们之间的交互。 中介者模式就是将对象之间的交互封…

    技术杂谈 2023年5月31日
    0144
  • 简明 homebrew

    介绍 包管理工具几乎已经成为现代操作系统或者开发平台不可或缺的工具软件,无论做开发,或是管理服务器,都免不了用到一些第三方依赖包。包管理工具的基本功能就是提供一个集中的平台,可以在…

    技术杂谈 2023年5月31日
    0104
  • 【翻译】WhatsApp 加密概述(技术白皮书)

    会话初始化设置 要与另一个 WhatsApp 用户通信,WhatsApp 客户端需要先建立一个加密会话。加密会话一旦被创建,客户端就不需要再重复创建会话,除非会话失效(例如重新安装…

    技术杂谈 2023年5月31日
    0103
  • api接口基础Day1

    String的常用方法: length():获取字符串的长度(字符个数) public class LengthDemo { public static void main(Str…

    技术杂谈 2023年7月10日
    0115
  • IDEA一键部署SpringBoot项目到服务器

    1. 安装Alibaba Cloud Toolkit插件 2. 配置部署环境 2.1 为本次部署设置一个名字 2.2 选择被部署文件的生成方式 IDEA提供了三种方式: Maven…

    技术杂谈 2023年7月24日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球