2011-05-30 85 views
3

我使用GWT和想使用Java代碼,即使用正則表達式電子郵件這樣的驗證,但是當我使用的代碼:驗證在GWT

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package org.ArosysLogin.client; 

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class EmailValidator{ 

     private Pattern pattern; 
     private Matcher matcher; 

     private static final String EMAIL_PATTERN = 
        "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 

     public EmailValidator(){ 
      pattern = Pattern.compile(EMAIL_PATTERN); 
     } 

     /** 
     * Validate hex with regular expression 
     * @param hex hex for validation 
     * @return true valid hex, false invalid hex 
     */ 
     public boolean validate(final String hex){ 

      matcher = pattern.matcher(hex); 
      return matcher.matches(); 


     } 
} 

。它是給我運行時錯誤在build.xml中,請告訴我爲什麼會發生這種情況,它的解決方案是什麼。

+0

能否請您發表你正在控制檯上的堆棧跟蹤? – DonX 2011-05-30 12:36:00

回答

10

Java正則表達式在GWT中不可用。您應該使用GWT's RegExp

0

根據文檔,它不應該工作。但我偶然發現,你也可以使用java.lang.String的matches方法。

所以,你可以這樣做:

public boolean validate(final String hex){ 
    return ((hex==null) || hex.matches(EMAIL_PATTERN)); 
} 
5

這是代碼被用於驗證電子郵件ID。我已經檢查過了。它在GWT中工作正常。

String s ="[email protected]"; 
Boolean b = s.matches(
"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); 
System.out.println("email is " + b); 
1

嘗試這樣:

if(email.matches("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")){ 
    GWT.log("Email Address Valid"); 
}else{ 
GWT.log("Email Address Invalid"); 
valid = false; 
}