Skip to content
This repository was archived by the owner on Nov 5, 2025. It is now read-only.

Commit e863ffc

Browse files
author
John Cordeiro
committed
Add regex rule with custom message as well
1 parent eaa5634 commit e863ffc

5 files changed

Lines changed: 61 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package br.com.ilhasoft.support.validation.binding;
2+
3+
import android.databinding.BindingAdapter;
4+
import android.widget.TextView;
5+
6+
import br.com.ilhasoft.support.validation.R;
7+
import br.com.ilhasoft.support.validation.rule.RegexRule;
8+
import br.com.ilhasoft.support.validation.util.EditTextHandler;
9+
import br.com.ilhasoft.support.validation.util.ErrorMessageHelper;
10+
import br.com.ilhasoft.support.validation.util.ViewTagHelper;
11+
12+
/**
13+
* Created by john-mac on 3/24/17.
14+
*/
15+
public class RegexBindings {
16+
17+
@BindingAdapter(value = {"validateRegex", "validateRegexMessage"}, requireAll = false)
18+
public static void bindingRegex(TextView view, String pattern, String errorMessage) {
19+
EditTextHandler.disableErrorOnChanged(view);
20+
21+
String handledErrorMessage = ErrorMessageHelper.getStringOrDefault(view,
22+
errorMessage, R.string.error_message_regex_validation);
23+
ViewTagHelper.appendValue(R.id.validator_rule, view, new RegexRule(view, pattern, handledErrorMessage));
24+
}
25+
26+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package br.com.ilhasoft.support.validation.rule;
2+
3+
import android.widget.TextView;
4+
5+
import org.apache.commons.validator.routines.DateValidator;
6+
7+
import br.com.ilhasoft.support.validation.util.EditTextHandler;
8+
9+
/**
10+
* Created by john-mac on 6/16/16.
11+
*/
12+
public class RegexRule extends Rule<TextView, String> {
13+
14+
public RegexRule(TextView view, String value, String errorMessage) {
15+
super(view, value, errorMessage);
16+
}
17+
18+
@Override
19+
public boolean isValid(TextView view) {
20+
return view.getText().toString().matches(value);
21+
}
22+
23+
@Override
24+
public void onValidationSucceeded(TextView view) {
25+
EditTextHandler.removeError(view);
26+
}
27+
28+
@Override
29+
public void onValidationFailed(TextView view) {
30+
EditTextHandler.setError(view, errorMessage);
31+
}
32+
}

library/src/main/res/values-es/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<string name="error_message_min_length">Campo no válido. El número mínimo de caracteres %1$d</string>
44
<string name="error_message_max_length">Campo no válido. El número máximo de caracteres %1$d</string>
55
<string name="error_message_date_validation">Formato de datos no válido</string>
6+
<string name="error_message_regex_validation">Formato no válido</string>
67

78
<string name="error_message_email_validation">Formato de correo electrónico no válido</string>
89
<string name="error_message_cpf_validation">Formato de CPF no válido</string>

library/src/main/res/values-pt/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<string name="error_message_min_length">Campo inválido. O número mínimo de caracteres é %1$d</string>
44
<string name="error_message_max_length">Campo inválido. O número máximo de caracteres é %1$d</string>
55
<string name="error_message_date_validation">Formato de data inválido</string>
6+
<string name="error_message_regex_validation">Formato inválido</string>
67

78
<string name="error_message_email_validation">Formato do e-mail inválido</string>
89
<string name="error_message_cpf_validation">Formato do CPF inválido</string>

library/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<string name="error_message_min_length">Invalid field. The minimum number of characters %1$d</string>
44
<string name="error_message_max_length">Invalid field. The maximum number of characters %1$d</string>
55
<string name="error_message_date_validation">Invalid data format</string>
6+
<string name="error_message_regex_validation">Invalid format</string>
67

78
<string name="error_message_email_validation">Invalid email format</string>
89
<string name="error_message_username_validation">Invalid username format</string>

0 commit comments

Comments
 (0)