【问题标题】:How to allow special characters in email validation?如何在电子邮件验证中允许特殊字符?
【发布时间】:2019-11-16 08:00:08
【问题描述】:

我试图在验证用户输入的电子邮件时允许使用特殊字符,但 android 标准 utils.pattern 验证不适用于这种情况。我已经实现如下:

if(!AppUtils.isValidEmail(edtEmail.getText().toString())){
            Toast.makeText(context, "Please enter valid email", Toast.LENGTH_SHORT).show();
            return false;
}

我要验证的函数:

public final static boolean isValidEmail(CharSequence target) {
      return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();

}

是否有正则表达式或其他方式来允许特殊字符?

【问题讨论】:

    标签: android validation


    【解决方案1】:

    请使用基本的正则表达式模式并根据您的需要进行调整。针对您的具体问题,允许在电子邮件中使用特殊字符。

    Pattern pattern = Pattern.compile("^[^@]+@[a-zA-Z0-9._-]+\\.+[a-z._-]+$");
    Matcher matcher = pattern.matcher(inputString);
    return matcher.matches();
    

    或者您也可以调整 EMAIL_ADDRESS of Pattern 中使用的正则表达式

    只需附加您需要的特殊字符,例如\\\&

    public static final Pattern EMAIL_ADDRESS
        = Pattern.compile(
            "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
            "\\@" +
            "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
            "(" +
                "\\." +
                "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
            ")+"
        );
    

    【讨论】:

    • 是的,这行得通。感谢 Vikalp 的帮助,但我真的不知道如何调整这个正则表达式。
    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多