den borde inte matcha på 111-1111111 den måste börja på 0 eller så är preg_match något helt annat, sen är jag lite osäker på att den fungera i huvudtaget eftersom du avslutar med ^ i regex är detta början av en sträng
^0[-+\d()]{6,15}$
känns lite bättre, men den kommer även matcha på 0(((((( som ett OK telefonnummer