Un coup de patte peut être par ici :
www.regexlib.com
Sinon déjà je dirais que le [http://] n'est pas bon car quand tu met [] c'est pour indiquer une liste possible.
Donc dejà je remplacerais par (http://) (les () forment un sous masque).
Pareille pour la fin : (\.php|\.htm|\.html|\.fr|\.com|/) (le \. c'est parce que le . est un caractère spécial qui veux dire "n'importe quel caractère et le \ annule le caractère spécial du . pour qu'il soit un vrai .)
Et mon conseille, c'est que tu teste ta regex petit à petit pour trouver quel "morceau" pose problème. Bonne chance