Ron*_*n M 0 ruby regex ruby-on-rails
我希望能够检查用户是否在字符串中输入任何顶级域名.优选地,用正则表达式验证这一点.
我还想允许用户.在其用户名中加入,这样Mr. Bobby才合法.
例如,bobby很好,但bobby.com会被正则表达式捕获.有没有办法为所有TLD做到这一点?
tad*_*man 10
不幸的是,答案是肯定的,不是,也许是一次性的.
我编写了一个gem,试图通过将公共后缀列表转换为可以以编程方式执行的内容来实现此目的.在大多数情况下,它非常准确,但该列表中仍有一些黑暗的角落没有合适的资格.如今,顶级域名是纯粹的无政府状态,注册它们的域名可以自由组织,但他们认为合适,或者根本不组织它们.
虽然今天bobby不是通用顶级域名(gTLD),但明天它可能会成为一个通用顶级域名.该提议域在ICANN名单是超现实的,至少可以说,事情这样的事情.google已经得到批准只是为了让生活混乱越好.
所以它取决于你的"顶级域名"的含义.有些事情即使看起来完全错误也完全有效,例如https://www.registry.google/
该顶级域名的列表似乎不够透彻,但其中的一些组织其子域在这个问题复杂化的特定方法.例如,澳大利亚不允许直接.au域名,因此example.au无效example.com.au."公共后缀"列表是用于cookie分配目的的这些规则的汇编.
在该列表存在之前,可以分配一个坚持所有的cookie .com.au,这种行为至少可以说是非常不受欢迎的.值得注意的是,com.au尽管与通常的\w+\.\w\w+模式匹配,但它不是一个有效的域.