Java Android.util.Patterns.EMAIL\u地址奇怪的行为

Java Android.util.Patterns.EMAIL\u地址奇怪的行为,java,android,regex,email,Java,Android,Regex,Email,今天我们经历了奇怪的行为模式 例如,在带有3.2存储rom(以前是4.0++)的平板电脑上,它工作得很好 但在其他一些3.2平板电脑和4.0设备上则不然 测试电子邮件功能的功能类似于: public static boolean checkEmail(CharSequence emailAddress){ if( Build.VERSION.SDK_INT >= 8 ){ return android.util.Patterns.EMAIL_ADDRESS.matc

今天我们经历了奇怪的行为模式

例如,在带有3.2存储rom(以前是4.0++)的平板电脑上,它工作得很好

但在其他一些3.2平板电脑和4.0设备上则不然

测试电子邮件功能的功能类似于:

public static boolean checkEmail(CharSequence emailAddress){
    if( Build.VERSION.SDK_INT >= 8 ){
        return android.util.Patterns.EMAIL_ADDRESS.matcher(emailAddress).matches();
    }
    ....
这就是我在第16个电子邮件地址模式(JAVA代码)源代码中的内容:

以下是“标准化”版本:

[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})+
JSregex验证器)告诉我们这个regexp基本上是正确的,但是在圆括号中,
\.
应该是
\.
,而
\\@
应该是
\
才能在regexpal中工作


此外,不太清楚的是,为什么第一个大括号中有两个“\+”组符号?

从is工作的设备上使用
pattern.pattern()
函数获取pattern的值,并从中生成您自己的
pattern
对象。这样,您就不会在不同设备的实现上存在差异。这同样适用于
地理编码器
,它在某些设备上不适用于我。

我们当前的解决方案,它有效:

[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}[\\@]{1}[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}([\\.]{1}[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25})+

我猜在不同的平台上使用的正则表达式风格是不一样的。最好的答案!!(api 8)
[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}[\\@]{1}[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}([\\.]{1}[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25})+