Это исправляет ваше регулярное выражение:
(?!(?:0[ /-]*){2,})([\+|0](?:[0-9/\-\(\) ] ?){7,25}[0-9])
Поскольку вы уже работали над своим выражением, чтобы разрешить определенным символам, которые вы видите в своем наборе данных, вместо того, чтобы писать новый с нуля, я работал с вашим.
Добавленная фраза в начале - отрицательный взгляд.
(?!(?:0[ /-]*){2,})
Перевод: Забегая вперед в начале матча, мы не хотим видеть {ноль (необязательно сопровождаемый такими символами, как пробел, косая черта или дефис)} два или более раз.
Если с двумя нулями все в порядке, замените 2 на три.Также измените символы внутри [/ -] в зависимости от того, как выглядят ваши данные.
Я проверил регулярное выражение по вашим образцам данных.Это работает.