android - 在使用 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 结尾的电子邮件,但即使输入与模式匹配,它也会显示无效
解决方案
用这个
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
推荐阅读
- java - 如何使用opencsv正确处理带引号的字符串中的逗号?
- git - 如何使父 repo 分支指向子模块 repo 分支
- c++ - Visual Studio 中的 LNK2001 和 LNK2019 错误有什么区别?
- encryption - 在 .Net 5 中通过 X509Certificate2Collection.Export() 创建 PKCS12 文件时使用什么加密算法加密私钥?
- r - r中的条件字符串替换
- max - quicksight中获取os版本列的最大值
- github - 部署时删除的文件
- java - 爪哇。难以从对象调用方法。(初学者)
- git - Github git push origin main 不起作用
- c++ - 没有调用 Dllmain 函数