我開發的電子郵件驗證Android應用程序,爲此我使用正則表達式,其連接如下:正則表達式拋出ANR在Android
它可以在一定條件下,但一定條件下,它給了我App Not Responding
錯誤。
例如,如果我把一些特定長度的文本,但沒有@
,那麼它給了我ANR。如果我的電子郵件長度低於這個範圍,它會給我適當的驗證錯誤。我的正則表達式如下:
public static final String EMAIL_PATTERN ="(?:[A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]*)+(\\w[A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+)@(?:[A-Za-z0-9-.]*)";
// Here it gives proper validation error for fgefjkbgjerk.com but gives ANR
for
sjkfghhrghergfhfgfghkfgkfgkjkgergejkgrjekfghfghfg.com
public static boolean checkEmailValidations(String regex,String email){
boolean patternStatus=false;
Pattern pattern= Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
if(matcher.matches()){
patternStatus=false;
}else{
patternStatus=true;
}
return patternStatus;
}
是否存在與正則表達式或我的實現有問題?
當你ANR,那麼你的logcat的堆棧跟蹤說呢? –
你的圖案看起來不對。在https://regex101.com檢查並驗證您的正則表達式 –
是的,我檢查了它。根據建議,它應該是這樣的[(?:[A-Za-z0-9!#$%&'* + - \/=?^ _'{|}〜。] *)+(\\ w [ A-ZA-Z0-9#$%&'* + - \/=^_'{|}〜] +)@(:![A-ZA-Z0-9 - ] *)'?。?。我也試過這個。但結果相同。 – nilkash