Подтвердить что ты не робот

Регулярное выражение позволяет строке содержать только цифры 0-9 и ограничить длину до 45

Я пытаюсь создать регулярное выражение, чтобы строка содержала только 0-9 в качестве символов, и она должна быть не менее 1 char в длину и не более 45. поэтому пример будет 00303039 будет совпадением, а 039330a29 не будет.

Пока это то, что у меня есть, но я не уверен, что это правильно.

[0-9]{1,45} 

Я также пробовал

^[0-9]{45}*$

но это тоже не работает. Я не очень хорошо знаком с регулярным выражением, поэтому любая помощь будет отличной. Спасибо!

4b9b3361

Ответ 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 для установки начала и конца строки