微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

regex – 如何写更可维护的正则表达式?

我开始觉得使用正则表达式会降低代码的可维护性。正则表达式的简洁和力量是有害的。 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

我通常只是试图将所有我的正则表达式调用包装在自己的函数中,有一个有意义的名称和一些基本的注释。我喜欢把正则表达式看作是一种只写的语言,只有编写它的人才能读取(除非它很简单)。我完全期望有人需要可能完全重写表达式,如果他们必须改变其意图,这可能是更好地保持正则表达式训练活着。

原文地址:https://www.jb51.cc/regex/357995.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐