#include "MsgUtils.h"
#include "LangUtils.h"
+#include "Logger.h"
#include <string.h>
#include <ctype.h>
unsigned emailAddrLenMax = 256;
const char *delimiters = ",;";
const char *numberRegex = "\\+?([[:digit:]][ *\\(\\)-]*){2,14}[[:digit:]]$";
- const char *emailRegex = "(([[:alnum:]_!#$%&'*+/=?`{|}~^-]+)|(^\"([[:alnum:]_!#$%&'*+/=?`{|}~^-\\(\\)<>\\[\\]:;@,. (\\\\)(\\\")])+\"))+(?:\\.(([[:alnum:]_!#$%&'*+/=?`{|}~^-]+)|(\"([[:alnum:]_!#$%&'*+/=?`{|}~^-\\(\\)<>\\[\\]:;@,. (\\\\)(\\\")])+\")))*@[[:alnum:]-]+(?:\\.[[:alnum:]-]+)*";
+ const char *emailRegex = "(?:(?:[^<>()\\[\\].,;:\\s@\"]+(?:\\.[^<>()\\[\\].,;:\\s@\"]+)*)|\".+\")@(?:(?:[^<>()\\[\\].,;:\\s@\"]+\\.)+[^<>()\\[\\].,;:\\s@\"]{2,})";
}
TokenizedRecipients MsgUtils::tokenizeRecipients(const std::string &inputText)
{
if (address.empty())
return false;
-
- std::regex numTemplate(numberRegex);
- return std::regex_match(address, numTemplate);
+ try {
+ std::regex numTemplate(numberRegex);
+ return std::regex_match(address, numTemplate);
+ } catch (const std::regex_error& e) {
+ MSG_LOG_ERROR("std::regex_error");
+ return false;
+ }
}
bool MsgUtils::isValidEmail(const std::string &address)
if (address.empty() || address.length() > emailAddrLenMax)
return false;
- std::regex emailTemplate(emailRegex);
- return std::regex_match(address, emailTemplate);
+ try {
+ std::regex emailTemplate(emailRegex);
+ return std::regex_match(address, emailTemplate);
+ } catch (const std::regex_error& e) {
+ MSG_LOG_ERROR("std::regex_error");
+ return false;
+ }
}
bool MsgUtils::isValidAddress(const std::string &address)