我想验证这些字符串
dkfi.fr
dje_uf.fkeid.fr
dkei.fkei.fr
因为子域可以包含下划线,但域 + ext 不能。
我已经完成了这个正则表达式:
^([0-9a-z'-_'.]+)*('.[0-9a-z'-]+){2,}$
但它不会验证 dkfi.fr 因为 * 后面的点 ''. 是必需的。我不想放''.?因为这个错误的字符串将被接受:"djeud.kd_dk.fr"
我希望如果第一部分(在 * 之前)未验证,则不需要该点,因此如果我们位于字符串的开头。
将正则表达式更改为:
^([0-9a-z_-]+'.)*([0-9a-z-]+'.[0-9a-z-]+)$
Symfony框架使用该模式进行域匹配。
~^(['pL'pN'pS-]+'.)+['pL]+$~ixu
在完整版中,它还允许使用IP和端口:GitHub 源
根据您的需求,您可以添加带有下划线的部分
~^(['pL'pN'pS_-]+'.)*(['pL'pN'pS-]+'.)+['pL]+$~ixu