虽然正则表达式很强大,但是,有一种观点认为:
除非不得不使用,否则不应考虑使用正则表达式。
如果你深度使用过正则,那么,你应该有被它折磨得筋疲力尽的时候,此时你应该无比赞同。
总体来说,正则有一些无法克服的缺点:难以理解、调试、修改……
正则难以阅读理解
首先,正则是一种“中间语言”,因此,难以阅读理解是一个必然结果。看到一个正则时,我们通常需要在心里将其“翻译”成人类可理解的自然语言。
但是,翻译的过程会面临一些问题:
- 耗时。而且视正则复杂程度而定,通常正则越复杂越耗时。
- 了解正则中出现的所有“语法点”。否则,将不可能正确理解其含义。
正则难以调试
如果你使用的正则不足够简单,那应该祈祷它是正确的。因为,调试一个不那么简单的正则,是件让人心力交瘁的事情。
你需要在脑中想像正则的整个解析过程——而这本该是电脑做的事儿——以确定哪个环节出了问题。
更糟糕的情况可能是,遇到一个“构造精巧”的字符串,让正则的解析陷入了“回溯地狱”——消灭它更是一个大工程。
正则难以修改
正则没有一个明显的功能分段语法,也没有良好的注释方法。这使得对一个正则增减功能也是困难的。
现实中的最佳实践
在现实中,正则并没有广泛被使用。
其中一个常见的应用是,在编辑器中,使用正则提供强大的字符串搜索/替换能力。
另一种是表单中,对诸如邮箱、电话号码等有固定模式的数据进行验证。
在这些应用中,通常,要么明确告知用户在使用正则,要么体现为一个较复杂的模式匹配。
小结
基于以上论述,要导出的观点是:如非必要,勿用正则。
正则往往看起来强大,用起来糟心。