Java 如何测试文本字段';s值是否为有效的电子邮件?

Java 如何测试文本字段';s值是否为有效的电子邮件?,java,java-me,lwuit,email-validation,Java,Java Me,Lwuit,Email Validation,可能重复: 我想测试用户是否输入了有效的电子邮件格式。如何在J2ME中进行编码?使用正则表达式。这里有一个关于如何做的例子。从博客帖子: public boolean isValidEmailAddress(String emailAddress){ String expression="^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"; CharSequence inputStr = emailAddress;

可能重复:

我想测试用户是否输入了有效的电子邮件格式。如何在J2ME中进行编码?

使用正则表达式。这里有一个关于如何做的例子。从博客帖子:

public boolean isValidEmailAddress(String emailAddress){  
   String  expression="^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";  
   CharSequence inputStr = emailAddress;  
   Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);  
   Matcher matcher = pattern.matcher(inputStr);  
   return matcher.matches();  

 } 

由于您在J2ME平台上,无法访问Java的正则表达式,因此可以尝试名为的第三方库。

为J2ME使用第三方正则表达式库。例如:,或使用许多可用于此目的的正则表达式之一对其进行验证(如中所建议)。例如,在中的那些

或者使用以下问题答案中建议的代码片段:

到目前为止,这个简单的方法对我来说效果很好。它使用以下正则表达式,使用
模式中的
模式。不区分大小写的
标志。compile

"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*((\\.[A-Za-z]{2,}){1}$)"
它还有一个兼容的验证器:。并且是一个兼容的正则表达式。这似乎是电子邮件地址的最新规范


使用简单验证器可能没问题,但使用简单验证器无法验证且与RFC兼容的验证器无法验证的地址也可能是用户的错误。

对于对可能的,可能正确的正则表达式来解析电子邮件地址:下面是一些perl模块的代码,afaik是正确的(但我不知道如何验证它,所以我只是重复其他人(希望受过更多教育的人)所说的话):

准备好了吗?好了,我们开始吧:

(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)
(?:(?:\r\n)?[\t])*(?:(?:(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t]
)+|\Z |(?=[\[“()@,;:\\”\[\]]))124;“(?:[^\“\r\\]\\.\.\。。。(?:(?:\r\n)?[\t])*”(?:(?:)
\r\n)?[\t])*(?:\。(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:)(
?:\r\n)?[\t])+\Z|(?=[\[“()@,;:\\”\[\]])))124;“(?:[^\“\r\\]\\\\.\。|(?:(?:\r\n)?[
\t] )*“(?:(?:(?:\r\n)?[\t])*)*@(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\0
31]+(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))\[([^\[\]\r\\]\\\\\\\]\\\\.]*\
](?:(?:\r\n)?[\t])*(?:\。(?:(?:\r\n)?[\t])*(?:[^(),;:\”\[\]\000-\031]+
(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))\124\[([^\[\]\ r\\]\\\\\].*\])(?:
(?:\r\n)?[\t])*(?:[^()@,;:\\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z
|(?=[\[“()@,;:\\”\[\]])|“(?:[^\”\r\\]\\\.\.\124;(?:(?:\ r\n)?[\t])*”(?:(?::\r\n)
?[\t])*)*\(?:(?:\r\n)?[\t])*)|(?:[^()@;:\”\[\]\000-\031]+(?:(?)?
:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\”\[\]]))。“(?:[^\”\r\\]\\\\.\.\124;(?:(?::\ r\n)?
[\t])*“(?:(?:(?:\r\n)?[\t])*:(?:(?:\r\n)?[\t])*(?:(?:(?:[^()@;:\\”\[\]
\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[”()@;:\\“\[\]]))。“(?:[^\”\r\\]|
\\(?:(?:\r\n)?[\t])*(?:(?:\r\n)?[\t])*(?:\(?:(?:\r\n)?[\t])*(?:[^()
@,;:\“\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\”))。”
(?:[^\”\r\\]\\。(?:(?:\r\n)?[\t])*“(?:(?:\r\n)?[\t])*)*@(?:(?:\r\n)?[\t]
)*(?:[^()@,;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?=[\[”()@,;:\\
“\[\]])\\[([^\[\]\r\\]\\\].*\](?:(?:\r\n)?[\t])*(?:\(?:(?:\r\n)?[\t])*(?:。)?
:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\124;\ Z;(?=[\[”),;:\”\[
\]]))|\[([^\[\]\r\\]\\\].*](?:(?:\r\n)?[\t])*)*(?:[^()@;:\”\[\]\000-
\031]+(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\\”\[\]]))。“(?:[^\\”\r\\\]\\\”|(
(?:(?:\r\n)?[\t])*“(?:(?:\r\n)?[\t])*\(?:(?:\r\n)?[\t])*)(?:,\s*(
?:(?:[^()@,;:\\”\[\]\000-\031]+(?:(?:\r\n)?[\t])+\Z;(?=[\[“()@,;:\\
“\[\]])\”(?:[^\”\r\\]\\\.(?:(?:\r\n)?[\t])*(?:(?:(?:\r\n)?[\t])*(?:\。(?:)(
(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\Z;(?:)=[
\[“()@,;:\\\”\[\]])|“(?:[^\”\r\\]\\\.\124;(?:(?:\ r\n)?[\t])*”(?:(?:\r\n)?[\t
])*))*@(?:(?:\r\n)?[\t])*(?:[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t
])+|\Z |(?=[\[“()@,;:\\\”\[\]]))\[([^\[\]\r\\]\\\\\].*](?:(?:\r\n)?[\t])*)(?
:\。(?:(?:\r\n)?[\t])*(?:[^()@;:\“\[\]\000-\031]+(?:(?:\r\n)?[\t])+|
\Z |(?=[\[“()@,;:\\”\[\]]))\[([^\[\]\r\\]\\\\].*](?:(?:\r\n)?[\t])*)*(?:
[^()@;:\\”\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+\124;\ Z;(?=[\[“()@;:\”)\[\
]]))|“(?:[^\”\r\\]\\.\。(?:(?:\r\n)?[\t])*”(?:(?:\r\n)?[\t])*)*\(?:(?:(?:\r\n)?[\t]):(
?:\r\n)?[\t])*)*)?;\s*)

你看过java中的正则表达式吗?我确信这样的正则表达式很容易得到。J2ME与使用正则表达式的标准JDK应该没有太大区别。根据维基百科的说法,J2ME被困在java 1.3中是出于什么原因。所以我们无法访问正则表达式。这是一个答案。我已经看到了“完整的”电子邮件的正则表达式,它填充了一个页面。模式类在J2ME中不可用!编辑了我的回复,以解决您在J2MEAs@Bohemian上的事实。Bohemian说,检查电子邮件地址的正则表达式不是您给出的,而且非常复杂,最好得出结论,正则表达式不是正确的方法。请参阅