知识卡片
正则需要结构化
内容
复杂正则应逐段拆解理解:锚点(^/$)、捕获/非捕获分组((...)/(?:...))、字符类([...])和量词(?/+/{m,n})各承担不同职责,拆成因子逐条解释才能确认匹配什么。JS 正则不支持注释和空白,天然难阅读,越复杂越容易在安全校验场景留漏洞。发散:正则不是越短越好,可读性差的表达式会把维护成本转嫁给未来的人。
参考来源
- 位置:《JavaScript语言精粹(修订版)》第7章《正则表达式 Regular Expressions》"一个例子"一节
- 结论依据:原文用匹配 URL 的正则 `parse_url` 为例,逐个因子(`^`、非捕获分组、字符类、量词、锚点 `$`)拆解讲解其含义,并总结"正则表达式不能像函数那样被分解成小片段",同时强调"如果你不能阅读和理解一个正则表达式,你如何能确保它对所有的输入都能正确地工作呢",据此推出复杂正则必须靠逐因子拆解才能安全理解和维护的结论。
- 原始内容:让我们分解parse_url的各个部分,看看它是如何工作的……正则表达式不能像函数那样被分解成小片段,所以表示parse_url的轨道很长……如果你不能阅读和理解一个正则表达式,你如何能确保它对所有的输入都能正确地工作呢?