我正在使用地址字段的正则表达式模式,它必须同时接受(字母数字和/.-,)但是在我的代码中我做了一些错误并且它与正则表达式不匹配可以任何正文告诉问题,为什么它不是工作正常吗?
只匹配一个字符,我希望在整个地址文本上匹配它。
以下是示例:
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 :(得分:7)
[0-9A-Z.,-/ ]
只匹配一个字符。
附加+
以匹配多个(1个或多个)字符:
[0-9A-Z.,-/ ]+
[A-Z]
仅匹配大写字母。要匹配小写字母,请添加a-z
。将-
放在字符集的开头或末尾。否则,它可能会导致错误(而不是字面上匹配-
,用作元字符含义范围)。
[-0-9A-Za-z.,/ ]+
答案 1 :(得分:2)
我根据您所需的解决方案对您的代码进行了一些更改:
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;
}
这将完美地运作。