我有一个场景,用户输入可以是阿拉伯语日期٢٠١٩-٠٣-٣٠或正常日期,例如2019-07-31。
我正在尝试找到与两种情况匹配的正则表达式
现在,我正在使用正则言论将阿拉伯日期与我从这里获得的日期匹配
我的代码就像
String s1 = "٢٠١٩-٠٣-٣٠";
String regx = "^[\u0621-\u064A\u0660-\u0669 ]+$";
System.out.println(regx.matches(s1));
但是它的打印错误,我该如何修复它,我还能将正常的日期正则置于此forgex?
您应该在字符串上调用matches
方法,然后使用regx
作为参数,而不是相反。而且,您无需逃脱Unicode符号的后斜线。另外,在正则表达式中添加破折号和"正常"(偶然称为"阿拉伯语")数字,您应该得到想要的东西:
String s1 = "٢٠١٩-٠٣-٣٠";
String s2 = "03-03-2019";
String regx = "^[\-u0621-u064Au0660-u06690-9 ]+$";
System.out.println(s1.matches(regx));
System.out.println(s2.matches(regx));
请注意,此正则表达式仅验证字符串由有效符号组成,而不是其具有正确的格式。
您必须将Regex放入比赛中,所以
s1.matches(regx);