首页 > 解决方案 > 在使用 kotlin 在 android 中验证电子邮件 ID 时,总是收到无效的电子邮件。我需要验证以 @univ.ac.in 结尾的邮件

问题描述

lass Mailvalidation : AppCompatActivity() {
lateinit var btnSubmit: Button
lateinit var edtMail: EditText
lateinit var email: String
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_mailvalidation)
    btnSubmit = findViewById(R.id.btnSubmit)
    edtMail = findViewById(R.id.edtMail)
    email = edtMail.text.toString()
    btnSubmit.setOnClickListener {
        val emailPattern="^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\\.)?[a-zA-Z]+\\.)?(kanchiuniv.ac)\\.in\$"
        if (email.matches(emailPattern.toRegex())) {
            Toast.makeText(this@Mailvalidation, "valid", Toast.LENGTH_SHORT).show()
            }
        else {
            Toast.makeText(this@Mailvalidation, "invalid", Toast.LENGTH_SHORT).show()
        }
    }
    }
}

\它应该验证以 kk@kanchiuniv.ac.in 结尾的电子邮件,但即使输入与模式匹配,它也会显示无效

标签: androidregexkotlin

解决方案


用这个

import java.util.regex.Pattern
...
val pattern:Pattern = 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}" +
            ")+"
            )

    fun String?.isValidEmail() : Boolean {
        if (this.isNullOrEmpty()) return false

        return pattern.matcher(this).matches()
    }

或者如果你使用安卓,你可以简单地使用

 fun String?.isValidEmail() : Boolean {
    if (this.isNullOrEmpty()) return false

    return PatternsCompat.EMAIL_ADDRESS.matcher(it).matches()
 }

用法

println("aaa@zz.co.uk".isValidEmail()) // true

推荐阅读