以下是模式:
$urlpattern = '%[^http://][^https://][\w]+(-[\w]+)*(\.[\w]+(-[\w]+)*)*\.[\w]{1,6}(\.[\w]{1,6})*[^/]%';
我遇到了一个让我困惑的奇怪的错误。
当我搜索像'power-tool-world.com'
这样的字符串时,它会对它进行搜索并返回'ower-tool-world.com'
(删除p)但是当我使用任何其他字母(未在其他所有字母上测试)时它工作正常,所以'cower-tool-world.com'
返回'cower-tool-world.com'
有人可以帮我理解原因,但更重要的是给我一个不会导致此问题的解决方案吗?
答案 0 :(得分:2)
错误在第一部分。当您使用方括号时,您匹配其中一个字符,因此[http://]
匹配h,t,p,:和/,这些字符将从下一个匹配组中排除。您应该使用^(http://|https://)?
代替。