我开始觉得使用正则表达式会降低代码的可维护性。正则表达式的简洁和力量是有害的。 Perl化合物这种副作用像默认操作符。
我有一种习惯,记录正则表达式,至少有一个句子给出基本意图和至少一个例子。
因为正则表达式被构建,我觉得绝对必要评论表达式中每个元素的最大成分。尽管这样,即使我自己的正则表达式让我抓我的头,好像我正在读克林贡。
你有意地贬低你的正则表达式吗?你能把更短,更强的分解成更简单的步骤吗?我放弃了嵌套正则表达式。是否有正则表达式构造,你避免由于可维护性问题?
不要让这个例子云问题。
如果下面的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先生的链接上面找到。
匹配01.1.02 | 11-30-2001 | 2/29/2000
非比赛02/29/01 | 13/01/2002 | 11/00/02