正则表达式
Regular Expression
一种预先定好的搜索规则写法,用来在文字中查找或过滤符合特定形状的模式
简单来说
正则表达式是用一小串符号提前写好的搜索规则,用来在文字里找出你想要的那种形状的模式。就像邮局分拣格提前规定好「以这种形状开头的地址放进这一格」一样,计算机程序也可以把「以 web 开头的所有文字」这样的规则写成一段简短的符号,然后机械地去核对输入的文字是否符合这个形状。
问题在于,如果这条规则定得太宽松,就会连带抓住一些本不该被抓住的东西。这就好比规定「姓金的人都是新员工」,结果连姓金的部长也被误认成新员工。规则本身并没有错,只是它没能涵盖现实中各种各样的情况,于是就产生了让人委屈的误判。
在报道中是这样出现的
文章中出现在这样的句子里:「这个函数正在把输入的域名与一份被当作邮箱服务商特征的正则表达式列表进行比对」。Google Workspace 的注册页面写了一条规则,把所有以 web 开头的域名统统归类为邮箱服务商,结果导致使用正常域名的博主、甚至乌克兰经济部都被拒绝注册。这里容易被误解的一点是,好像正则表达式本身是有问题的技术,但实际的问题在于设计失误——规则定得太宽泛,把本该通过的正常情况也一并过滤掉了。
亲手试一试
在在线正则表达式测试工具里输入类似 web..* 这样的规则,再把 web.example.com、webflow.io 等各种域名逐一输入进去,就能亲眼看到哪些会被匹配上、哪些能顺利通过。一点点修改规则做实验,你就会渐渐明白为什么过于宽泛的规则会带来意想不到的结果。
