#java #gwt
#java #gwt
Вопрос:
Я использую GWT и хочу таким образом проверять электронную почту, используя Java-код, то есть используя регулярные выражения, но когда я использую код:
/*
* 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. Не могли бы вы, пожалуйста, рассказать мне, почему это происходит и каково ее решение.
Комментарии:
1. Не могли бы вы, пожалуйста, опубликовать stacktrace, который вы получаете, на консоли?
Ответ №1:
Регулярное выражение Java недоступно в GWT. Вы должны использовать регулярное выражение GWT.
Ответ №2:
Этот код предназначен для проверки идентификатора электронной почты. Я это проверил. В GWT все работает нормально.
String s ="survi@gmail.com";
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);
Ответ №3:
Согласно документации, это не должно работать. Но я случайно обнаружил, что вы также можете использовать java.lang.Метод сопоставления строк.
Итак, вы могли бы сделать это:
public boolean validate(final String hex){
return ((hex==null) || hex.matches(EMAIL_PATTERN));
}
Ответ №4:
Попробуйте что-то вроде этого:
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;
}