我开始觉得使用正则expression式会降低代码的可维护性。 正则expression式的简洁和力量是邪恶的。 Perl会像默认操作符那样带有副作用。 我有养成正则expression式的习惯,至less有一个句子给出了基本意图,至less有一个例子说明什么可以匹配。 由于build立了正则expression式,所以我觉得评论expression式中每个元素的最大组成部分是绝对必要的。 尽pipe如此,即使我自己的正则expression式,让我仿佛在读克林贡一样,挠挠脑袋。 你有意贬低你的正则expression式吗? 你是否可以将更短更强大的分解成更简单的步骤? 我放弃了嵌套正则expression式。 是否存在由于可维护性问题而避免的正则expression式构造? 不要让这个例子云问题。 如果迈克尔·阿什 ( Michael Ash)的以下内容存在某种缺陷,你会有什么前景可以完全抛弃它吗? ^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ 根据要求,可以使用Ash先生的链接find确切的目的。 匹配 01.1.02 | 11-30-2001 | 2000年2月29日 非匹配 02/29/01 | 13/01/2002 | 11/00/02