Есть задача, написать регулярное выражение на пропуск 2х слов, к примеру имя и фамилия, на любом языке (англ, немецкий...).
Вот как я подумал
var str = "Имя фамилия текст текст";
str.match(/^[^!@#]+ [^!@#]+$/i);
И вот результат
["Имя фамилия текст текст"]
Почему , регулярное выражение прошло валидацию? МОжет я не правильно проверяю, я не пойму...
По идее, регулярка должна найти совпадение
начало_строки[любой_символ_кроме!@#]минимум1раз пробел [любой_символ_кроме!@#]конец_строки
Но, в примере после 2ого слова есть еще пробелы, символы, и их тоже пропускает
Мне нужно проверить на любые символы кроме тех 3х знаков
Вот тестер
https://regex101.com/r/kJ5vZ2/4
Ответ
Вы сами отвечаете на свой вопрос. Регулярное выражение [^!@#]+ включает в себя любые символы кроме !, @ и # в том числе включает и пробел! А это значит, что вся строка Имя фамилия текст текст подходит под первое [^!@#]+. Добавьте в список исключаемых слов пробел
Пример:
var str = "Имя фамилия текст текст";
str.match(/^[^!@# ]+ [^!@# ]+$/i);
https://regex101.com/r/kJ5vZ2/5
Комментариев нет:
Отправить комментарий