ユーザー入力の検証に 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
か?