Условное выражение регулярного выражения - PullRequest
1 голос
/ 27 марта 2020

У меня есть следующее регулярное выражение, которое подтверждает, что строка содержит только числа и имеет длину от 10 до 11 символов.

^[0-9]{10,11}$

Однако, если длина строки составляет 11, мне нужно проверить что первый символ равен 1. Если длина строки равна 10, дальнейшая проверка не требуется.

примеры допустимых строк

3455558899

15554445555

пример неверной строки

25554445555

85554445555

Возможно ли это с помощью регулярных выражений? Кстати, это регулярное выражение будет использоваться в приложении Java.

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Вы можете использовать это регулярное выражение с необязательным совпадением 1 в начале, а затем сопоставить следующие 10 цифр:

^1?\d{10}$

Демонстрация RegEx

Это будет сделайте так, чтобы это регулярное выражение совпадало с 11 цифрами, когда первая ди git равна 1 или будет соответствовать 10 цифрам.

Подробности RegEx:

  • ^ : Начало
  • 1?: при желании совпадение с 1 при начале
  • \d{10}: совпадение с 10 цифрами
  • $: конец

В Java используйте следующую строку для построения вашего регулярного выражения:

String re = "^1?\\d{10}$";
1 голос
/ 27 марта 2020

Если это числовое значение c, его проще преобразовать в Long, а затем сравнить вместо регулярного выражения.

String x = {your value};
Long i = Long.valueOf(x);
if(i <= 19999999999L) return true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...