Вы можете использовать квантификатор {0,2}
для группы без захвата, которая сама соответствует одному из [/.-]
, за которым следуют 1+ цифр 0-9.
Чтобы предотвратить сопоставление более 10 цифр, Вы можете использовать отрицательный прогноз, который не будет соответствовать 11 цифрам.
Если вы хотите максимум 0 - 3, квантификатор может быть {0,3}
^(?!(?:[0-9\/.-]*[0-9]){11}$)[0-9]+(?:[\/.-][0-9]+){0,2}$
Regex demo
const pattern = /^(?!(?:[0-9\/.-]*[0-9]){11}$)[0-9]+(?:[\/.-][0-9]+){0,2}$/;
[
"1",
"10.02",
"1111111111",
"111.111.1111",
"10.12/2020",
"/",
".10.20",
"11111111111",
"111.111.11111"
].forEach(s => console.log(s + " --> " + pattern.test(s)));