Вы можете использовать это регулярное выражение,
^[^+\n]{3,}(?:\+[^+\n]{3,})*$
Пояснение:
^
- начало строки
[^+\n]{3,}
- Это обеспечивает совпадение с любыми символами, кроме +
и новой строки, \n
, которые вы можете удалить, если ввод, который вы пытаетесь сопоставить, не содержит символов новой строки и {3,}
позволяет соответствовать как минимум трем и более символам
(?:\+[^+\n]{3,})*
- эта часть дополнительно позволяет сопоставить символ +
, затем разделить его по крайней мере тремя или более символами и целым числом ноль или более раз, чтобы сохранить появление +
символа необязательно
$
- конец ввода
Демо
Редактировать: Обновление решения, где пробел не участвует в подсчете количества символов по обе стороны от +
, где минимальное необходимое количество символов было три
Вы можете использовать это регулярное выражение для игнорирования счетных пробелов в тексте,
^(?:[^+\n ] *){3,}(?:\+ *(?:[^+\n ] *){3,})*$
Демо
Кроме того, если вы имеете дело только с буквенно-цифровым текстом, вы можете использовать это более простое и понятное регулярное выражение,
^(?:[a-z0-9] *){3,}(?:\+ *(?:[a-z0-9] *){3,})*$
Демо