正则表达式名声不好。似乎每当提到它们时,它都会调用可怕的文字墙的图像,这些图像看起来绝对是胡说八道。例如,这是用于验证电子邮件地址的常用正则表达式:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/ =?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\ [\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0 -9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0- 5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0 -4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\ x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
哎呀。我不会假装你会在本文结束时理解这个表达,但我至少想向你展示它是建立在简单的规则之上的,这些规则并不难理解。
您可能想知道,为什么您首先要关心这些事情是如何工作的?我认为有几个很好的理由。首先是理解基础可以更容易记住如何编写好的正则表达式。
我肯定遇到过多种情况,我写了一个正则表达式,然后几个月都不需要看它。当我最终回到它时,我已经忘记了一切,不得不从头开始重新学习