我正在尝试使用 TextWatcher 和正则表达式来验证用户输入。请注意,我有一个复杂的正则表达式:
edit.addTextChangedListener(new TextWatcher() {
private final Pattern m_regex = Pattern.compile("([a-zA-Z]{4}[ ]{0,1}){7}");
@Override
public void afterTextChanged(Editable s) {
String text = s.toString();
int length = text.length();
if(!m_regex.matcher(text).matches() && length > 0) {
s.delete(length - 1, length);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
这里的问题是匹配器只能检查 2 个字符串状态:与提供的表达式匹配和不匹配,但对于输入验证,您还需要检查中间状态 - 当字符串与模式不匹配但也不与之矛盾时. 有什么方法可以使用我的正则表达式来验证输入的字符串EditText
吗?