我使用以下正则表达式来匹配有效的域名:
/^([a-z0-9]([a-z0-9]*-*[a-z0-9])*\.)+[a-z][a-z]+$/
这很好用。但是,当我用域名替换它的一部分以匹配域名本身及其子域时,它不起作用。例如,如果我使用
/^([a-z0-9]([a-z0-9]*-*[a-z0-9])*\.)*mycarbrokedown.be$/
为了匹配ns1.mycarbrokedown.be,preg_match返回0。
我使用了几个在线测试人员确认我的正则表达式与我的字符串匹配。奇怪的是,当我使用preg选项时,regextester.com不会返回任何内容。
所有这些让我觉得这是PHP中的一个错误。由于我不知道是什么导致了这个错误,我无法找到匹配的错误报告。
这里发生了什么?
答案 0 :(得分:0)
请尝试使用此正则表达式并告诉我结果。可能是你在字符串的前面/末尾有空格或其他东西,这就是它不匹配的原因,所以我删除了^和&amp ;.这也是RegexBuddy Library的正则表达式。
preg_match_all('/([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}/i', $subject, $result, PREG_PATTERN_ORDER);