RegEx: Как я могу сопоставить все числа больше 49?
Я несколько новичок в регулярных выражениях и пишу подтверждение для поля количества, в котором для использования регулярных выражений требуется.
Как я могу сопоставить все числа больше или равные 50?
Я пробовал
[5-9][0-9]+
но это соответствует только 50-99. Есть ли простой способ сопоставить все возможные числа, превышающие 49? (используются только целые числа)
Ответы
Ответ 1
Тот факт, что первая цифра должна находиться в диапазоне 5-9
, применяется только в случае двух цифр. Итак, проверьте это в случае двух цифр и разрешите прямое число:
^([5-9]\d|\d{3,})$
Это регулярное выражение имеет начало/конец якорей, чтобы убедиться, что вы проверяете все цифры, а строка фактически представляет собой число. |
означает "или", поэтому либо [5-9]\d
, либо любое число с 3 или более цифрами. \d
является просто ярлыком для [0-9]
.
Изменить: Чтобы запретить такие номера, как 001
:
^([5-9]\d|[1-9]\d{2,})$
Это приводит к тому, что первая цифра не равна нулю в случае 3 или более цифр.
Ответ 2
Я знаю, что уже есть хороший ответ, но он не позволит вести нулевые. И у меня нет достаточной репутации, чтобы оставить комментарий, поэтому...
Здесь мое решение, позволяющее вести нулевые значения:
Сначала я сопоставляю числа от 50 до 99 (с возможными ведущими нулями):
0*[5-9]\d
Затем сопоставьте числа 100 и выше (также с начальными нулями):
0*[1-9]\d{2,}
Добавьте их вместе с "или" и заверните их, чтобы они соответствовали всему предложению:
^0*([1-9]\d{2,}|[5-9]\d)$
Что это!
Ответ 3
Попробуйте сопоставить условную группу 50-99
или любую строку из трех или более цифр:
var r = /^(?:[5-9]\d|\d{3,})$/
Ответ 4
Следующие совпадения все больше или равно 11100
:
^([1-9][1-9][1-9]\d{2}\d*|[1-9][2-9]\d{3}\d*|[2-9]\d{4}\d*|\d{6}\d*)$
Для большего или равного 50
:
^([5-9]\d{1}\d*|\d{3}\d*)$
Смотрите шаблон и измените его на любой номер.
Также было бы здорово найти некоторые рекурсивные операторы вперед/назад для больших чисел.
Ответ 5
Попробуйте это регулярное выражение:
[5-9]\d+|\d{3,}
Ответ 6
Я знаю, что это старый, но ни одно из этих выражений не сработало для меня (возможно, потому что я на PHP). Следующее выражение работало нормально для проверки того, что число больше 49:
/([5-9][0-9])|([1-9]\d{3}\d*)/