Страницы

Поиск по вопросам

среда, 15 мая 2019 г.

Регулярное выражение превод строки

Подскажите, подскажите пожалуйста, модифицировать данное регулярное выражение: при нажатии клавиши Enter идёт переход на новую строку, и в вызалит ошибка ссылающаяся на пробелы, даже если увеличить количество разрешённых пробелов, при переходе на новую строку все равно появляется это сообщение об ошибке. использую вот это: ссылка

Возможно можно дописать в регулярное выражение, количество переходов на новую строку, но я перевернул весь интеренет и не нашёл ответа на этот вопрос. Вероятно я как новичёк, не совсем понимаю как работать с регулярными выражения, надеюсь на вашу помощь!
export const getAboutStockValidation = () => Yup.string() .trim() .matches(/^((?!\s{2}).)*$/, 'Не более одного пробела между словами') .min('10', 'Минимум 10 символов') .max('250', 'Максимум 250 символов');


Ответ

Главная проблема — не находит знаков перехода на новую строку. Кроме того, используемая конструкция слишком громоздка, достаточно ограничиться одним блоком просмотра вперёд:
/^(?![^]*\s{2})/
^(?![^]*\s{2}) находит начало строки (^), а потом, если находит 0 и более любых символов, за которыми следует 2 любых пробельных символа, возваращает false
Если необходимо отсеять совпадания с 2+ "вертикальными" пробельными символами, используйте
/^(?![^]*[^\S
]{2})/
[^\S
] находит только "горизонтальные" пробельные символы (за исключением некоторых нетипичных переходов на новую строку, но этого шаблона чаще всего достаточно).

Комментариев нет:

Отправить комментарий