skoro chciałeś wykluczyć zestaw znaków i uzyskać jego odwrotność (wszystkie oprócz) to daszek stosuje się na początku klamry [^znaki], przy czym nie myl tego daszka z daszkiem na początku wyrażenia regularnego, gdzie on oznacza, iż wyrażenie ma się dopasowywać od początku... znak "*" znaczy tyle co {0,}, czyli 0 lub wiele, tutaj raczej chciałeś zastosować znak "+" który znaczy {1,} co najmniej 1 znak (zwróć uwagę na przecinek)... wszystko zależy, jak dokładnie chcesz sprawdzać te adresy - można by wymodzić jakieś ogólne wyrażenie ale to wcześniej ktoś musiałby podać jakieś ograniczenia....
Jeśli chodzi o SQL iniection to przede wszystkim zainteresuj się PDO i funkcjami prepare, lub chociaż mysqli i też funkcjami prepare...
Zależy, jak daleko chcesz iść ze sprawdzaniem poprawności adresów - czasami ktoś się pomyli i choć adres strukturę będzie miał poprawną to nie będzie nigdzie prowadził - można to też sprawdzić ale to inny temat...
ogólne wyrażenie na adres mogło by wyglądać (przy czym nie chce mi się sprawdzać jakie są najdziwniejsze znaki i bodajże znak ";" chyba też może występować, podobnie jak procenty czy polskie znaki (wszystko zależy, kto z jakiej przeglądarki skopiuje i jakie kodowanie otrzyma..)
przykładowe wyrażenie mogło by wyglądać np. w ten sposób:
Kod
/^(?:https?\:\/\/)?(?:[wW]{3}\.)?(?!.*(?:[\-\/\.]){2,})[a-zA-Z0-9_\-\.]{2,}\.[a-zA-Z]{2,5}(?:\/[a-zA-Z0-9_!\/\|\+\%\.\-\?\=\&\#]*)?$/
(?!.*(?:[\-\/\.]){2,}) - to znaczy, że nigdzie dalej ma się nie dopasować do występujących pod rząd naraz 2 znaków "-" lub "." lub "/"
jeśli jest jeszcze część poza domeną to reszta musi się zaczynać od znaku "/"
tam sobie możesz pododawać jakieś dozwolone / zabronione znaki...
SKORO LINKI WKLEJAJĄ Z ZEWNĄTRZ, TO ZAŁOŻYŁEM, IŻ DOMENA W LINKU TEŻ MUSI BYĆ
[a-zA-Z0-9_\-\.]{2,}\.[a-zA-Z]{2,5}, choć teraz wprowadzili, że i w domenie może być nawet cyrylica ^^, więc zamiast tego można by jakiś bardziej ogólny schemat napisać... zależy co chcesz ^^