Вот вам "учебная" регулярка: \S+@\S+
По сути проверяется только наличие собачки и "каких-нибудь" символов перед и после нее. https://regex101.com/r/cG7dW0/1
Антон: модификатор /g - служит для того, чтобы регулярка не останавливалась после первого найденного совпадения в строке. В данном случае он только для демонстрации примера.
/m - multiline - для многострочного текста, та-же фигня.
regex_match (Это же из boost?) сам по себе возвращает true/false, писать if(true) return true; совсем не обязательно.
К сожалению под рукой нет плюсов чтоб собрать пример.
Stalker_RED: ну то что вы написали мне известно и никак не относится к текущей проблеме. Эти регулярные выражения без проблем будут работать, например, в PHP, но в C++ тут явно что-то нужно еще. И я хз что именно.
Вам надо заменить \\. на \.
И в качестве общей рекомендации: для упрощения стоит использовать спецсимволы, например так "/^[\w.-]+@[\w.-]+\\.[a-z]{2,4}$/i", где \w эквивалентно [a-zA-Z0-9_], а флаг "i" указывает, что следует игнорировать регистр символов при поиске совпадений.