Регулярное выражение, соответствующее арабской или обычной дате - PullRequest
2 голосов
/ 06 марта 2019

У меня есть сценарий, где пользовательский ввод может быть арабская дата, как ٣٠-٠٣-٣٠ или обычная дата, например 2019-07-31.

Я пытаюсь найти регулярное выражение, которое соответствует обоим случаям

прямо сейчас я использую регулярное выражение, чтобы сопоставить арабскую дату с той, которую я получил от здесь

мой код похож на

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

но его печать ложна, как я могу это исправить, а также как я могу добавить к этому регулярное выражение даты?

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Вы должны вызвать метод matches для строки и использовать regx в качестве аргумента, а не наоборот. И вам не нужно избегать обратной косой черты для символов Юникода. Кроме того, добавьте тире и «нормальные» (которые иногда называют «арабскими») цифры в регулярное выражение, и вы должны получить то, что вы хотите:

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));

Обратите внимание, что это регулярное выражение только проверяет, что строка состоит из допустимых символов, но не имеет правильного формата.

0 голосов
/ 06 марта 2019

Вы должны поместить регулярное выражение внутри спичек, поэтому

s1.matches(regx);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...