我应该如何验证电子邮件地址?
在 Android 中验证电子邮件地址(例如,来自用户输入字段)的好技术是什么? org.apache.commons.validator.routines.EmailValidator 似乎不可用。 Android 中是否已经包含其他库可以执行此操作,或者我必须使用 RegExp?
What's a good technique for validating an e-mail address (e.g. from a user input field) in Android? org.apache.commons.validator.routines.EmailValidator doesn't seem to be available. Are there any other libraries doing this which are included in Android already or would I have to use RegExp?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(30)
使用扩展函数的最简单的 Kotlin 解决方案:
然后您可以像这样进行验证:
如果您在 kotlin-multiplatform 中无法访问
Pattern
,则这是等效的:Simplest Kotlin solution using extension functions:
and then you can validate like this:
If you are in kotlin-multiplatform without access to
Pattern
, this is the equivalent:这是 kotlin 使用扩展函数的最佳方法
this is the best way in kotlin Useing Extension Function
在您想要验证电子邮件 ID 的地方调用此方法。
Call This Method where you want to validate email ID.
对于电子邮件验证,android 提供了一些 内置模式。但它只支持 < strong>API 级别 8 及以上。
以下是使用该模式检查电子邮件验证的代码。
确保执行此方法后,您应该检查如果此方法返回true,则您允许保存电子邮件,如果此方法返回false,则显示电子邮件“无效”的消息”。
希望你能得到你的答案
感谢您。
For an Email validation android provide some InBuilt Pattern.But it only support API level 8 and above.
Here is code for use that pattern to check email validation.
Make sure that after execute this method you should check that if this method return true then you allow to save email and if this method return false then display message that email is "Invalid".
Hope you get your answer,
Thanks you.
我强烈建议您不要尝试“验证”电子邮件地址,否则您只会无缘无故地投入大量工作。
只需确保输入的内容不会破坏您自己的代码 - 例如,没有可能导致异常的空格或非法字符。
其他任何事情只会让你付出大量的努力而回报却微乎其微......
Can I STRONGLY recommend you don't try to 'validate' email addresses, you'll just get yourself into a lot of work for no good reason.
Just make sure what is entered won't break your own code - e.g. no spaces or illegal characters which might cause an Exception.
Anything else will just cause you a lot of work for minimal return...
Kotlin 中的电子邮件验证:
此方法用于检查有效的电子邮件 ID 格式。
Email Validation in Kotlin:
This method is used for checking valid email id formats.
如果您使用的是 API 8 或更高版本,则可以使用现成的
Patterns
类来验证电子邮件。示例代码:如果您支持的 API 级别低于 8,那么您只需将
Patterns.java
文件复制到您的项目中并引用它即可。您可以从 此链接If you are using API 8 or above, you can use the readily available
Patterns
class to validate email. Sample code:By chance if you are even supporting API level less than 8, then you can simply copy the
Patterns.java
file into your project and reference it. You can get the source code forPatterns.java
from this link这是
android.util.Patterns.EMAIL_ADDRESS
String
将匹配它,如果示例一些特殊的匹配电子邮件
您可以根据您的情况修改此模式,然后验证经过
Here is
android.util.Patterns.EMAIL_ADDRESS
String
will match it ifExample some special match email
You may modify this pattern for your case then validate by
尝试这个简单的方法,它不能接受以数字开头的电子邮件地址:
Try this simple method which can not accept the email address beginning with digits:
试试这个代码..它真的有效..
Try this code.. Its really works..
以下是我用过的。然而,它比普通电子邮件包含额外的字符,但这对我来说是一个要求。
这个问题的答案:-
验证电子邮件的要求带有给定点的邮件地址
解释
定义的字符。 (“\”用于转义)。
Following was used by me. However it contains extra characters than normal emails but this was a requirement for me.
Answer of this question:-
Requirement to validate an e-mail address with given points
Explanation-
characters defined. ("\" is used for escaping).
这里的关键是您要完全验证电子邮件地址。您不仅想检查语法的正确性,还想检查电子邮件地址是否真实。
两个明显的原因:真实用户经常会错误地输入他们的电子邮件地址,一些用户可能会输入虚假的电子邮件地址。因此,您需要进行语法检查和存在性检查。
我在 Android 上找到的最好方法是使用免费的 Cloudmersive Validation API为了这。
代码如下所示:
我在所有应用程序中都使用了它,这很棒,因为我可以在输入时验证 UX 中的电子邮件地址。
The key here is that you want to fully validate the email address. You don’t just want to check it for syntactic correctness, you want to check whether the email address is real.
Two obvious reasons: real users often mis-type their email addresses, and some users may put in fake email addresses. Therefore, you want to do a syntactic check and an existence check.
The best way to do this that I have found on Android is to use the free Cloudmersive Validation API for this.
The code looks like this:
I’m using this in all my apps and it is great because I can validate the email addresses in the UX at the point of entry.
根据 Patterns.EMAIL_ADDRESS,此电子邮件是正确的“[email protected]” 。因此,我修改了 Patterns.EMAIL_ADDRESS 中的正则表达式并增加了域的最小长度。
这是 Kotlin 的函数:
我刚刚将域部分从 {0,25} 更改为 {1,25}。
According to Patterns.EMAIL_ADDRESS, this email is correct "[email protected]". So I modified the regex in Patterns.EMAIL_ADDRESS and increased the minimum length for domain.
Here is the function for Kotlin:
I just changed domain part from {0,25} to {1,25}.
请注意,大多数正则表达式对于国际域名 (IDN) 和新顶级域(如 .mobi 或 .info)无效(如果您检查国家/地区代码或 .org、.com、.gov 等)。
有效的检查应将本地部分(at 符号之前)和域部分分开。您还应该考虑本地部分和域的最大长度(总共 255 个字符,包括 at 符号)。
最好的方法是以 IDN 兼容格式转换地址(如果需要)、验证本地部分 (RFC)、检查地址长度并检查域的可用性(DNS MX 查找)或简单地发送电子邮件。
Note that most of the regular expressions are not valid for international domain names (IDN) and new top level domains like .mobi or .info (if you check for country codes or .org, .com, .gov and so on).
A valid check should separate the local part (before the at-sign) and the domain part. You should also consider the max length of the local part and domain (in sum 255 chars including the at-sign).
The best approach is to transform the address in an IDN compatible format (if required), validate the local part (RFC), check the length of the address and the check the availability of the domain (DNS MX lookup) or simply send an email.
Linkify 类有一些非常有用的可能相关的帮助器方法,包括旨在获取电话号码和电子邮件地址的正则表达式等:
http://developer.android.com/reference/android/text/util/Linkify.html
The Linkify class has some pretty useful helper methods that might be relevant, including regular expressions designed to pick up phone numbers and email addresses and such:
http://developer.android.com/reference/android/text/util/Linkify.html
我使用了以下代码。这非常有效。我希望这会对您有所帮助。
并使用以下方法。如果电子邮件有效,则返回 true。
I have used follwing code.This works grate.I hope this will help you.
and use follwing method.This returns true if email is valid.
电子邮件是您的电子邮件。
email is your email-is.
对于正则表达式爱好者来说,我从现在起发现的最好的(例如与 RFC 822 一致)电子邮件模式如下(在 PHP 提供的过滤器之前)。我想对于那些使用 API 的人来说,将其翻译成 Java 是很容易的。 8:
For regex lovers, the very best (e.g. consistant with RFC 822) email's pattern I ever found since now is the following (before PHP supplied filters). I guess it's easy to translate this into Java - for those playing with API < 8 :
另一个选项是从 API 级别 8 开始的内置 Patterns:
模式可查看源
OR :
来自 @AdamvandenHoven 的一行解决方案
Another option is the built in Patterns starting with API Level 8:
Patterns viewable source
OR
One line solution from @AdamvandenHoven:
K-9 邮件中使用下一个模式:
您可以使用函数
Next pattern is used in K-9 mail:
You can use function
从 API 8 (android 2.2) 开始,有一个模式:android.util.Patterns.EMAIL_ADDRESS
http://developer.android.com/reference/android/util/Patterns.html
因此,您可以使用它来验证 yourEmailString:
如果电子邮件有效
UPD,则返回 true:
该模式源码为:
参考:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns。 java
所以你可以自己构建它以兼容API < 8.
Since API 8 (android 2.2) there is a pattern: android.util.Patterns.EMAIL_ADDRESS
http://developer.android.com/reference/android/util/Patterns.html
So you can use it to validate yourEmailString:
returns true if the email is valid
UPD:
This pattern source code is:
refer to: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
So you can build it yourself for compatibility with API < 8.
我们现在有一个简单的电子邮件模式匹配器。
Java:
Kotlin 函数:
Kotlin 扩展:
We have a simple Email pattern matcher now.
Java:
Kotlin Function:
Kotlin Extension:
不要使用正则表达式。
显然,以下是一个正则表达式,它可以正确验证大多数符合 RFC 2822,(并且在诸如“[email]之类的事情上仍然会失败protected]”,org.apache.commons.validator.routines.EmailValidator 也是如此)
可能是验证电子邮件的最简单方法,只需将确认电子邮件发送到所提供的地址,然后它会被退回无效。
如果您想执行一些基本检查,您只需检查它的格式是否为
*@*
如果您有一些特定于业务逻辑的验证,那么您可以使用正则表达式来执行该检查,例如必须是 gmail。 com帐户什么的。
Don't use a reg-ex.
Apparently the following is a reg-ex that correctly validates most e-mails addresses that conform to RFC 2822, (and will still fail on things like "[email protected]", as will org.apache.commons.validator.routines.EmailValidator)
Possibly the easiest way to validate an e-mail to just send a confirmation e-mail to the address provided and it it bounces then it's not valid.
If you want to perform some basic checks you could just check that it's in the form
*@*
If you have some business logic specific validation then you could perform that using a regex, e.g. must be a gmail.com account or something.
使用简单的一行代码进行电子邮件验证,
例如...
Use simple one line code for email Validation
use like...
您可以像这样编写 Kotlin 扩展:
然后这样调用它:
You could write a Kotlin extension like this:
And then call it like this:
这是 Android Studio 的建议:
This is Android Studio suggestions:
使用 android:inputType="textEmailAddress" 如下:
和:
use android:inputType="textEmailAddress" as below:
and:
您可以使用正则表达式来执行此操作。像下面这样的东西。
注意:检查上面给出的正则表达式,不要照原样使用它。
You can use regular expression to do so. Something like the following.
Note: Check the regular expression given above, don't use it as it is.
android.util
包中有一个Patterns
类,它在这里很有用。以下是我经常用于验证电子邮件和许多其他内容的方法There is a
Patterns
class in packageandroid.util
which is beneficial here. Below is the method I always use for validating email and many other stuffs