正则表达式匹配阿拉伯日期或正常日期

时间:2019-03-06 14:13:10

标签: java regex

在我的情况下,用户输入可能是阿拉伯日期,例如 ٢٠١٩-٠٣-٣٠或正常日期,例如2019-07-31。

我正在尝试找到匹配两种情况的正则表达式

现在我正在使用正则表达式将阿拉伯日期与从here获得的日期进行匹配

我的代码就像

        String s1 = "٢٠١٩-٠٣-٣٠";
        String regx = "^[\\u0621-\\u064A\\u0660-\\u0669 ]+$";
        System.out.println(regx.matches(s1));

但是它的打印错误,我该如何解决它,又如何向该版本中添加正常的日期正则表达式?

2 个答案:

答案 0 :(得分:2)

您应该在字符串上调用matches方法,并使用regx作为参数,而不是相反。而且,您无需对Unicode符号使用反斜杠。另外,在正则表达式中添加破折号和“正常”(偶然称为“阿拉伯”)数字,您应该得到想要的:

String s1 = "٢٠١٩-٠٣-٣٠";
String s2 = "03-03-2019";
String regx = "^[\\-\u0621-\u064A\u0660-\u06690-9 ]+$";
System.out.println(s1.matches(regx));
System.out.println(s2.matches(regx));

请注意,此正则表达式仅验证字符串包含有效符号,而不验证其格式正确。

答案 1 :(得分:0)

您必须将正则表达式放入比赛中,所以

s1.matches(regx);
相关问题