今日、私たちは奇妙なパターンの振る舞いを経験しました。
たとえば、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 regex validator) は、この正規表現がほとんど正しいことを示していますが、丸括弧では正規表現で動作する\\.
必要が\.
あり、動作する\\@
必要があり\@
ます。
さらに、最初の中かっこに '\+' グループの記号が 2 つある理由は明確ではありません。