Регулярное выражение позволяет строке содержать только цифры 0-9 и ограничить длину до 45
Я пытаюсь создать регулярное выражение, чтобы строка содержала только 0-9
в качестве символов, и она должна быть не менее 1 char в длину и не более 45
. поэтому пример будет 00303039
будет совпадением, а 039330a29
не будет.
Пока это то, что у меня есть, но я не уверен, что это правильно.
[0-9]{1,45}
Я также пробовал
^[0-9]{45}*$
но это тоже не работает. Я не очень хорошо знаком с регулярным выражением, поэтому любая помощь будет отличной. Спасибо!
Ответы
Ответ 1
Вы почти находитесь, все, что вам нужно, - это привязка (^
) и конец привязки ($
):
^[0-9]{1,45}$
\d
является коротким для класса символов [0-9]
. Вы можете использовать это как:
^\d{1,45}$
Анкеры заставляют шаблон соответствовать целым входам, а не только его части.
Ваше регулярное выражение [0-9]{1,45}
ищет от 1 до 45 цифр, поэтому строка, подобная foo1
, также будет соответствовать, так как она содержит 1
.
^[0-9]{1,45}
ищет от 1 до 45 цифр, но эти цифры должны быть в начале . Он соответствует 123
, но также 123foo
[0-9]{1,45}$
ищет от 1 до 45 цифр, но эти цифры должны быть в конце конца. Он соответствует 123
, но также foo123
^[0-9]{1,45}$
ищет от 1 до 45 цифр, но эти цифры должны быть как в начале и в конце ввода, поэтому он должен быть целым.
Ответ 2
Первое совпадение с любым количеством цифр внутри вашей строки (также допускает другие символы, т.е. "039330a29" ). Второй позволяет только 45 цифр (и не менее). Так что просто возьмите лучшее из обоих:
^\d{1,45}$
где \d
совпадает с [0-9]
.
Ответ 3
Используйте это регулярное выражение, если вы не хотите начинать с нуля:
^[1-9]([0-9]{1,45}$)
Если вы не возражаете, начиная с нуля, используйте:
^[0-9]{1,45}$
Ответ 4
codaddict предоставил правильный ответ. Что касается того, что вы пробовали, я объясню, почему они не делают срез:
-
[0-9]{1,45}
почти существует, однако он соответствует строке от 1 до 45 цифр, даже если она встречается в другой более длинной строке, содержащей другие символы. Следовательно, вам нужно ^
и $
, чтобы ограничить его точным соответствием.
-
^[0-9]{45}*$
соответствует точно 45-значной строке, повторяется 0 или любое количество раз (*
). Это означает, что длина строки может быть равна 0 или кратно 45 (90, 135, 180...).
Ответ 5
Комбинация обеих попыток, вероятно, вам нужна:
^[0-9]{1,45}$
Ответ 6
^[0-9]{1,45}$
правильный.
Ответ 7
Rails не любит использование ^ и $для некоторых соображений безопасности, возможно, лучше использовать \A и\z для установки начала и конца строки