androidjava中地址字段的模式

androidjava中地址字段的模式,java,android,regex,Java,Android,Regex,我正在使用regex模式作为地址字段,它必须同时接受(字母数字和/-),但在我的代码中我犯了一些错误,它与regex不匹配。任何人都能告诉这个问题,为什么它不能正常工作 只匹配一个字符,我想匹配整个地址文本 下面是一个例子: public static boolean Address(EditText etAddress, String sAddress) { Pattern ps = Pattern.compile("[0-9A-Z.,-/ ]"); Matcher

我正在使用regex模式作为地址字段,它必须同时接受(字母数字和/-),但在我的代码中我犯了一些错误,它与regex不匹配。任何人都能告诉这个问题,为什么它不能正常工作

只匹配一个字符,我想匹配整个地址文本

下面是一个例子:

public static boolean Address(EditText etAddress, String sAddress) {

    Pattern ps = Pattern.compile("[0-9A-Z.,-/ ]");    
    Matcher ms = ps.matcher(etAddress.getText().toString());    
    boolean bs = ms.matches();
    if (bs == false) {    
        etAddress.setError("error");
        bs = true;

    } else {
        etAddress.setError(null);
        bs = false;
    }
    return bs;
}

[0-9A-Z.-/]
只匹配一个字符

追加
+
以匹配多个(1个或多个)字符:

[0-9A-Z.-/]+
[A-Z]
只匹配大写字母。要同时匹配小写字母,请添加
a-z
。将
-
放在字符集的开头或结尾。否则,它可能会导致错误(而不是按字面意义匹配
-
,用作元字符含义范围)

[-0-9A-Za-z./]+

我根据您需要的解决方案对您的代码进行了一些更改:

public static boolean Address(EditText etAddress, String sAddress) {
    //changed your pattern text according to your requirements
    Pattern ps = Pattern.compile("[-0-9A-Za-z.,/ ]+");    
    Matcher ms = ps.matcher(etAddress.getText().toString());    
    boolean bs = ms.matches();
    if (bs == false) {    
        etAddress.setError("error");
        bs = true;

    } else {
        etAddress.setError(null);
        bs = false;
    }
    return bs;
}
这将非常有效