forked from organicmaps/organicmaps
Merge pull request #3687 from milchakov/MAPSME-1656_incorrect_email_validation
[editor] Mapsme 1656 incorrect email validation
This commit is contained in:
commit
5015a51721
2 changed files with 21 additions and 6 deletions
|
@ -315,6 +315,15 @@ bool EditableMapObject::ValidateEmail(string const & email)
|
|||
if (email.empty())
|
||||
return true;
|
||||
|
||||
if (strings::IsASCIIString(email))
|
||||
return regex_match(email, regex(R"([^@\s]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$)"));
|
||||
|
||||
if ('@' == email.front() || '@' == email.back())
|
||||
return false;
|
||||
|
||||
if ('.' == email.back())
|
||||
return false;
|
||||
|
||||
auto const atPos = find(begin(email), end(email), '@');
|
||||
if (atPos == end(email))
|
||||
return false;
|
||||
|
@ -323,14 +332,10 @@ bool EditableMapObject::ValidateEmail(string const & email)
|
|||
if (find(next(atPos), end(email), '@') != end(email))
|
||||
return false;
|
||||
|
||||
// There should be at least one '.' sign after '@' ...
|
||||
// There should be at least one '.' sign after '@'
|
||||
if (find(next(atPos), end(email), '.') == end(email))
|
||||
return false;
|
||||
|
||||
// ... not in the end.
|
||||
if (email.back() == '.')
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
} // namespace osm
|
||||
|
|
|
@ -107,10 +107,20 @@ UNIT_TEST(EditableMapObject_ValidateEmail)
|
|||
TEST(EditableMapObject::ValidateEmail(""), ());
|
||||
TEST(EditableMapObject::ValidateEmail("e@ma.il"), ());
|
||||
TEST(EditableMapObject::ValidateEmail("e@ma.i.l"), ());
|
||||
|
||||
TEST(EditableMapObject::ValidateEmail("e-m.ail@dot.com.gov"), ());
|
||||
TEST(EditableMapObject::ValidateEmail("#$%&'*+-/=?^`_{}|~.@dot.qw.com.gov"), ());
|
||||
|
||||
TEST(!EditableMapObject::ValidateEmail("e.ma.il"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("e@ma@il"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("e@ma@i.l"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("e@mail"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("@email.a"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("emai.l@"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("emai@l."), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("e mai@l.com"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("emai@.l"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("emai@_l.ab"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("emai@l_.ab"), ());
|
||||
TEST(!EditableMapObject::ValidateEmail("email@e#$%&'*+-/=?^`_{}|~.com"), ());
|
||||
}
|
||||
} // namespace
|
||||
|
|
Loading…
Add table
Reference in a new issue