Страницы

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

четверг, 30 мая 2019 г.

Регулярное выражение лишние символы

Есть задача, написать регулярное выражение на пропуск 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

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

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