今天我們體驗到了奇怪的模式行爲。Android android.util.Patterns.EMAIL_ADDRESS奇怪的行爲
例如,在具有3.2 stock 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'th來源電子郵件ADDRES模式(JAVA代碼):
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正則表達式驗證程序)告訴說,這個正則表達式大多是正確的,但在圓括號\\.
應0123'和\\@
應該是\@
正常工作在正則表達式。
此外,還不十分清楚,爲什麼第一個大括號中有兩個'\ +'符號組?
我的猜測中使用正則表達式的味道是不能跨越不同的平臺相同。 – Stephan 2013-05-14 14:36:29