今天我们经历了奇怪的模式行为。
例如,在平板电脑上有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();
}
....
所以这就是我在电子邮件地址模式(JAVA代码)中的第16个来源:
public static final Pattern EMAIL_ADDRESS
= 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}" +
")+"
);
这是'规范化'版本:
[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})+
Regexpal( JS 正则表达式验证程序)告诉此正则表达式大部分正确,但在圆括号中,\\.
应为\.
和{{1}应该\\@
在regexpal中工作。
此外还不太清楚,为什么第一个括号中有两个'\ +'符号组?
答案 0 :(得分:1)
使用Pattern.pattern()
函数从可运行的设备获取模式的值,并从中创建自己的Pattern
对象。这样,您就不会在跨设备的实现方面存在差异。同样适用于Geocoder
,这在某些设备上对我不起作用。
答案 1 :(得分:1)
我们当前的解决方案,有效:
[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})+