1

我必须使用以下正则表达式检查一些 textField:

[\sa-zA-Z.'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+

它适用于正则表达式检查器,但不适用于我的 GWT/GXT 应用程序。我在扩展 AbstractValidator 的类中使用上面的函数。

public static native boolean isValidName(String name) /*-{
    var pattern =  /[\sa-zA-Z.\'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+/;
    return pattern.test(name);
}-*/;

我使用 GXT2 和 GWT 1.6.4。

4

4 回答 4

4

您是否尝试过String.macthes用于验证 gxt 中的值和ValidatorTextField

    someTextField.setValidator(new Validator() {
        @Override
        public String validate(Field<?> field, String value) {
            return value.matches("[\\sa-zA-Z.'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+") 
                                 ? null : "not a valid value";
        }
    });
于 2012-07-31T16:53:05.900 回答
0

对gxt2没问题...

相应的方法是setRegex(String regex)如果所有其他验证器都通过了,它将被调用

http://www.jarvana.com/jarvana/view/com/extjs/gxt/2.2.0/gxt-2.2.0-javadoc.jar!/com/extjs/gxt/ui/client/widget/form/TextField .html

为什么不使用(对于 gxt3):

 com.sencha.gxt.widget.core.client.form.Field<T>.addValidator(Validator<T> validator) 

 field.addValidator(new RegExValidator( "[\sa-zA-Z.\'-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]", "some message"));

gxt 字段 api

gxt RegExValidator

于 2012-07-31T10:43:37.170 回答
0

为什么要原生,而您仍然可以使用Java?或者更好的是,尝试看看是否GXT为您提供了一些验证工具。喜欢Validators

相关: 正则表达式和 GWT

于 2012-07-31T10:46:35.220 回答
0

煎茶GXT4:

枚举 VType


 public enum VType {
    ALPHABET("^[a-zA-Z_]+$", "Alphabet"), ALPHANUMERIC("^[a-zA-Z0-9_]+$",
            "Alphanumeric"), NUMERIC("^[+0-9]+$", "Numeric"), EMAIL("^(\\w+)([-+.][\\w]+)*@(\\w[-\\w]*\\.){1,5}([A-Za-z]){2,4}$","Email");
    String regex;
    String name;

    VType(String regex, String name) {
        this.regex = regex;
        this.name = name;
    }

}

验证器类


import java.util.ArrayList;
import java.util.List;

import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.EditorError;
import com.sencha.gxt.widget.core.client.form.Validator;
import com.sencha.gxt.widget.core.client.form.error.DefaultEditorError;

public class VTypeValidator implements Validator<String> {

    private String message;  
    private final VType type;

    public VTypeValidator(VType type,String message){
      this.type = type;
      this.message=message;
    }



  @Override
  public List<EditorError> validate(Editor<String> editor, String value) {
      List<EditorError> res = null;
      if (!value.matches(type.regex)) {
          List<EditorError> errors = new ArrayList<EditorError>();
          errors.add(new DefaultEditorError(editor, message,""));
          return errors;
        }
      return res;
  }
}

如何与 textField 一起使用


   field.addValidator(new VTypeValidator(VType.EMAIL,"Invalid email"));
于 2016-11-28T02:23:12.540 回答