0%

【观点】如非必要,勿用正则

虽然正则表达式很强大,但是,有一种观点认为:

除非不得不使用,否则不应考虑使用正则表达式。

如果你深度使用过正则,那么,你应该有被它折磨得筋疲力尽的时候,此时你应该无比赞同。

总体来说,正则有一些无法克服的缺点:难以理解、调试、修改……

正则难以阅读理解

首先,正则是一种“中间语言”,因此,难以阅读理解是一个必然结果。看到一个正则时,我们通常需要在心里将其“翻译”成人类可理解的自然语言。

但是,翻译的过程会面临一些问题:

  • 耗时。而且视正则复杂程度而定,通常正则越复杂越耗时。
  • 了解正则中出现的所有“语法点”。否则,将不可能正确理解其含义。

正则难以调试

如果你使用的正则不足够简单,那应该祈祷它是正确的。因为,调试一个不那么简单的正则,是件让人心力交瘁的事情。

你需要在脑中想像正则的整个解析过程——而这本该是电脑做的事儿——以确定哪个环节出了问题。

更糟糕的情况可能是,遇到一个“构造精巧”的字符串,让正则的解析陷入了“回溯地狱”——消灭它更是一个大工程。

正则难以修改

正则没有一个明显的功能分段语法,也没有良好的注释方法。这使得对一个正则增减功能也是困难的。

现实中的最佳实践

在现实中,正则并没有广泛被使用。

其中一个常见的应用是,在编辑器中,使用正则提供强大的字符串搜索/替换能力。

另一种是表单中,对诸如邮箱、电话号码等有固定模式的数据进行验证。

在这些应用中,通常,要么明确告知用户在使用正则,要么体现为一个较复杂的模式匹配。

小结

基于以上论述,要导出的观点是:如非必要,勿用正则。

正则往往看起来强大,用起来糟心。