由Ridwan Ajibola(https://github.com/rajibola)制作。
厌烦了那些令人困惑的正则表达式模式?让我们来改变这种状况。 // 之前:难以理解的密码验证正则表达式
const passwordRegex = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-zA-Z]).{8,}$/;
// 之后:人类可读的密码验证正则表达式
const humanPasswordRegex = createRegex()
.startAnchor() // ^
.hasDigit() // (?=.*\d)
.hasSpecialChar() // 包含特殊字符
.hasLetter() // (?=.*[a-zA-Z])
.anyCharacter() // 任意字符
.atLeast(8) // 至少 8 个字符
.endAnchor() // $
.toRegExp();
点击全屏 点击退出
…
我为什么要这么做正则表达式确实很强大,但让我们坦诚地说:像有人在键盘上乱按一通这样的模式看起来就像有人在键盘上睡着了一样。在我刚开始学 JavaScript 的时候,正则表达式是我最大的烦恼——而且我问过的每个开发者都跟我有一样的烦恼。
我就问:如果我们可以用日常英语来写正则表达式那会怎样?
Human-Regex 诞生,由 Ridwan Ajibola 开发,它是一个将正则表达式模式转换为 链式调用 、 易于阅读的代码 的实用库。
它是怎么工作的
传统regex → 人读正则
传统正则 | 人类正则等效 |
---|---|
/\d/ |
.数字() |
/[a-zA-Z]/ |
.字母() |
/(?=.*\d)/ |
.包含数字() |
`^ / # 用人类语言写正则表达式:Human-Regex 让正则更易懂
由Ridwan Ajibola(https://github.com/rajibola)制作。
厌烦了那些令人困惑的正则表达式模式?让我们来改变这种状况。 // 之前:难以理解的密码验证正则表达式
const passwordRegex = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-zA-Z]).{8,}$/;
// 之后:人类可读的密码验证正则表达式
const humanPasswordRegex = createRegex()
.startAnchor() // ^
.hasDigit() // (?=.*\d)
.hasSpecialChar() // 包含特殊字符
.hasLetter() // (?=.*[a-zA-Z])
.anyCharacter() // 任意字符
.atLeast(8) // 至少 8 个字符
.endAnchor() // $
.toRegExp();
点击全屏 点击退出
…
我为什么要这么做正则表达式确实很强大,但让我们坦诚地说:像有人在键盘上乱按一通这样的模式看起来就像有人在键盘上睡着了一样。在我刚开始学 JavaScript 的时候,正则表达式是我最大的烦恼——而且我问过的每个开发者都跟我有一样的烦恼。
我就问:如果我们可以用日常英语来写正则表达式那会怎样?
Human-Regex 诞生,由 Ridwan Ajibola 开发,它是一个将正则表达式模式转换为 链式调用 、 易于阅读的代码 的实用库。
它是怎么工作的
传统regex → 人读正则
| .行首锚点() / .行尾锚点()
const emailRegex = createRegex()
.startAnchor()
.word().oneOrMore() // 包含一个或多个字母、数字或下划线的字符串 (一次或多次)
.literal('@') // @
.word().oneOrMore() // 包含一个或多个字母、数字或下划线的字符串 (一次或多次)
.literal('.') // .
.letter().atLeast(2) // 至少两个字母 (至少两次)
.endAnchor()
.toRegExp();
// 生成一个正则表达式来匹配电子邮件地址
不再猜测[a-zA-Z0-9_]
或 {2,}
代表什么。代码解释得很清楚。
等等等等
主要特点✅ 可读的语法
像 .hasDigit()
和 .startAnchor()
这样的函数使模式更加直观。
✅ 链式设计
就像写句子一样简单,你可以一步步构建复杂的模式。
✅ 轻量级
仅仅 1.0 kB(压缩)。
✅ 开源
MIT 许可证授权,欢迎各位贡献!
此处省略了部分内容 (chǔcǐ shěnglüè le bù duō néng fàn)
60秒内快速上手安装库(library):→
npm install human-regex
运行此命令来安装human-regex包
切换到全屏;退出全屏
构建你的第一个正则吧:
const urlRegex = createRegex()
.startAnchor() // 开始锚点
.protocol() // 协议 (支持http或https协议)
.www().optional() // www().可选() ((www\.)?)
.word().oneOrMore() // 单词().一个或多个()
.literal('.') // 字面量('.')
.tld() // 顶级域名() (com|org|net)
.toRegExp(); // 转正则表达式()
切换到全屏模式。退出全屏。
此处省略内容
为什么这事儿很重要入职培训:新来的开发者一眼就能理解正则表达式的逻辑。
维护提示:再也不用通过正则表达式“考古”来更新旧代码了。
协作:团队节省了更多时间来理解模式。
……
加入这个活动正则表达式并不一定很吓人。试试 Human Regex 并:
⭐ 给 GitHub 仓库点个赞
🐞 提交 Bug
💡 提交代码或者文档
让我们一起让正则表达式变得人人都能用吧!