你是如何学会正则表达式的？
自诩精通正则... 抢答了 我简单回忆了下，其实很简单，就是一点 所有正则表达式的需求，都应该经过自己思考完成. 你每次『ctrl+c ctrl+v』其实都丢失了一次独立思考的机会，即便你事后已经思考了为什么这个正则行得通。 我完全反对，上面任何关于正则表达在几小时内就能掌握的论调，虽然我在学校时也是从一个类似30Minute掌握正则表达式的教程开始的。这东西一定要持续的用，才能形成稳定的记忆，毕竟正则这个东西根本不是设计用来给人阅读的。。。 工具 其实没那么麻烦了，Sublime Text 或 类似编辑器的 『ctrl + F』 足矣，平时开发顺带练了. 记得打开左下的正则开关 其实大部分涉及到字符串模式匹配的都可以用正则解决，我大概罗列下自己的经历 1. 入门: 解决各个业务上的问题，比如邮箱、手机号等等，开始知道正则能解决什么问题，以及正则的受限性。 2. 进阶: 比如在最初写 的时候， 尝试实现一个简化的router。  在这个过程中，开始会使用子匹配和特定的宿主语言API实现一些高级特性，类express的route 会支持 括号内引入子规则 ，比如 /api/blogs/:id(\d+) ，这里会有一些较复杂递归的处理，配合String.prototype.replace(首参数支持正则)可以较好的解决。在这个阶段，基本我已经可以感觉已经无需查阅任何关于正则的资料，可以自行解决不太复杂的文本模式匹配问题，初步形成了记忆。 3. 再进阶:  碰到更复杂的正则表达式的需求 我尝试了使用javascript生成正则表达式，比如在 拼装了一个下面的正则，这个几乎是无法人肉维护了，必须用代码生成。 后面的一些非业务项目，涉及到的更复杂场景，基本也是类似的解决方案，只不过生成的正则更加恶心。我可以列举下，比如 后面碰到的这些问题，其实有些不算是完全的正则了，因为会与上下文相关，到这里基本上你可以有十足的把握清楚何时才去使用正则表达式。 当然和 一样有精力的话，去实现一个正则引擎，肯定会是一劳永逸的记忆方式。