Страницы

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

воскресенье, 8 марта 2020 г.

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

#javascript #регулярные_выражения


Есть задача, написать регулярное выражение на пропуск 2х слов, к примеру имя и фамилия,
на любом языке (англ, немецкий...).

Вот как я подумал

    var str = "Имя фамилия текст текст";
    str.match(/^[^!@#]+ [^!@#]+$/i);


И вот результат

["Имя фамилия текст текст"]


Почему , регулярное выражение прошло валидацию? МОжет я не правильно проверяю, я
не пойму...

По идее, регулярка должна найти совпадение

начало_строки[любой_символ_кроме!@#]минимум1раз пробел  [любой_символ_кроме!@#]конец_строки

Но, в примере после 2ого слова есть еще пробелы, символы, и их тоже пропускает

Мне нужно проверить на любые символы кроме тех 3х знаков

Вот тестер
https://regex101.com/r/kJ5vZ2/4
    


Ответы

Ответ 1



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

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

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