android - 在编辑文本框中验证日期

标签 android android-widget android-edittext

我正在使用以下代码来验证在 edittextbox 中输入的日期。但是在 xml 文件中我给出了它的输入类型日期。

int i = validate(registerdate);

这是验证函数:

private int  validate(String registerdate) {

        String regEx =
            "^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$";
          Matcher matcherObj = Pattern.compile(regEx).matcher(registerdate);
          if (matcherObj.matches())
            {
                return 1;
            }
            else
            {
                return 0;
            }
    }

它在

处给我编译时错误
String regEx =
            "^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$";

说无效的转义序列。

任何人都可以找出我错在哪里或任何其他方法来验证日期表达式吗?

最佳答案

Java 会将字符串中的\视为 escape sequence 的开始.确保你使用\代替(这样你在字符串中得到一个实际的\字符)并且你应该没问题。

快速更新: 正如 Etienne 指出的那样,如果您确实想要在 RegEx 本身中使用\,则需要使用\\,因为这会在字符串中产生\,这将产生\在正则表达式中。

更正后的正则表达式:

String regEx ="^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d{2}$";

关于android - 在编辑文本框中验证日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764233/

相关文章:

android - 如何实时锁定文本字段中的空白字符?

android - 如何使用 EditText 在一行中设置 Spinner

android - 如何在Android中动态设置textview高度

android - Android 主屏幕小部件中的水平滚动

android - 我建立一个 Activity 图表是可以的,但是当我建立它的 fragment 时出现一些错误

android - 调试Widget导致ANR

java - 使用 Spans 获取 EditText 的左侧部分文本

android - 如何禁用自定义键盘全屏?

android - API,可在Google Play上获取应用的说明

java - 在 Android 应用程序中打开网页