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