Added Unicode email address validation

This commit is contained in:
M66B 2022-02-16 10:13:45 +01:00
parent 4a0fb691ba
commit 41b05032d7
2 changed files with 14 additions and 3 deletions

View File

@ -70,6 +70,7 @@ import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
@ -757,8 +758,11 @@ public class FragmentIdentity extends FragmentBase {
// throw new IllegalArgumentException(context.getString(R.string.title_no_name));
if (TextUtils.isEmpty(email) && !should)
throw new IllegalArgumentException(context.getString(R.string.title_no_email));
if (!Helper.EMAIL_ADDRESS.matcher(email).matches() && !should)
Pattern pattern = (unicode ? Helper.EMAIL_ADDRESS_UNICODE : Helper.EMAIL_ADDRESS);
if (!pattern.matcher(email).matches() && !should)
throw new IllegalArgumentException(context.getString(R.string.title_email_invalid, email));
if (TextUtils.isEmpty(host) && !should)
throw new IllegalArgumentException(context.getString(R.string.title_no_host));
if (TextUtils.isEmpty(port))

View File

@ -192,8 +192,7 @@ public class Helper {
private static final String[] ROMAN_10 = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
private static final String[] ROMAN_1 = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
static final Pattern EMAIL_ADDRESS
= Pattern.compile(
static final Pattern EMAIL_ADDRESS = Pattern.compile(
"[\\S]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
@ -203,6 +202,14 @@ public class Helper {
")+"
);
static final Pattern EMAIL_ADDRESS_UNICODE = Pattern.compile(
"([\\p{L}\\_\\.\\-\\d]+)" +
"@" +
"([\\p{L}\\-\\.\\d]+)" +
"((\\.(\\p{L}){2,63})+)"
// ^([\p{L}\_\.\-\d]+)@([\p{L}\-\.\d]+)((\.(\p{L}){2,63})+)$
);
private static final ExecutorService executor = getBackgroundExecutor(1, "helper");
static ExecutorService getBackgroundExecutor(int threads, final String name) {