2011-05-30 72 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; 
}