在Android中验证电子邮件地址(例如从用户输入字段)的好技术是什么?emailvalidator似乎不可用。还有其他库做这个,包括在Android已经或我必须使用RegExp?
当前回答
在包android中有一个Patterns类。Util在这里是有用的。以下是我经常使用的验证电子邮件和许多其他东西的方法
private boolean isEmailValid(String email) {
return !TextUtils.isEmpty(email) && Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
其他回答
我已经使用以下代码。这很有效。我希望这对你有所帮助。
if (validMail(yourEmailString)){
//do your stuf
}else{
//email is not valid.
}
并使用以下方法。如果电子邮件有效,则返回true。
private boolean validMail(String yourEmailString) {
Pattern emailPattern = Pattern.compile(".+@.+\\.[a-z]+");
Matcher emailMatcher = emailPattern.matcher(emailstring);
return emailMatcher.matches();
}
这是android.util.Patterns.EMAIL_ADDRESS
(a-zA-Z0-9 + ._ \ % - +) {1256} \ @ [a-zA-Z0-9] [a-zA-Z0-9 -]{0, 64}(。[a-zA-Z0-9] [a-zA-Z0-9 -] {0,25}) +
字符串将匹配它,如果
Start by 1->256 character in (a-z, A-Z, 0-9, +, ., _, %, - , +)
then 1 '@' character
then 1 character in (a-z, A-Z, 0-9)
then 0->64 character in (a-z, A-Z, 0-9, -)
then **ONE OR MORE**
1 '.' character
then 1 character in (a-z, A-Z, 0-9)
then 0->25 character in (a-z, A-Z, 0-9, -)
例如一些特殊匹配的电子邮件
a@b.c
a+@b-.c
a@b.c.d.e.f.g.h
您可以根据自己的情况修改此模式,然后通过
fun isValidEmail(email: String): Boolean {
return Patterns.EMAIL_ADDRESS.matcher(email).matches()
}
电子邮件验证在Kotlin:
val email = etEmail.text.toString().trim() // get email from user
if(isValidEmail(email)){ // call isValidEmail function and pass email in parameter
// Your email ID is Valid
}else{
// Enter your valid email ID
}
此方法用于检查有效的电子邮件id格式。
fun isValidEmail(email: CharSequence): Boolean {
var isValid = true
val expression = "^[\\w.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"
val pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE)
val matcher = pattern.matcher(email)
if (!matcher.matches()) {
isValid = false
}
return isValid
}
你也可以用
InternetAddress emailAddr = new InternetAddress(email);
emailAddr.validate();
如果邮件无效,它将抛出一个AddressException异常。
不幸的是,Android不支持jndi-dns,但是为了让你了解更强大的电子邮件验证,你可以使用它来验证电子邮件域。也许安卓专家可以帮忙,并展示是否有类似的替代品……这里提供了一个使用“常规”java的示例实现。
EDIT
我刚意识到javax。邮件也不支持…但这篇文章展示了一个变通方法。
这是Android Studio的建议:
public static boolean isEmailValid(String email) {
return !(email == null || TextUtils.isEmpty(email)) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件