Вопрос по regex, validation – Как создать регулярное выражение для приема не более 10 цифр?

7

Как создать регулярное выражение для приема не более 10 цифр?

Спасибо

(-1) НЕТ указаний на то, что вы сделалиany попытаться решить это для себя. DevinB
Заголовок «не более 10 цифр» отличается от вопроса "меньше десяти цифр" - что он? :) Jeremy Smyth
@Kev Я хорошо себя чувствую. Я проголосовал, и я объяснил, почему я проголосовал. Это цель понижения. Я должен был пометить "Plz-Send-Teh-Codez" вместо «домашней работы» Вы правы в этом. И, наконец, я уверен, что если «Регулярные выражения» должны были быть помечены как нелегальный контент, тогда SO будет забанен. DevinB
@Kev, SO не был создан как замена для выполнения вашей собственной работы. Это было место, где разработчики могли собираться вместе и обращаться за помощью по вопросам, которые ониcould not find ответ на. Я не предполагаю, что этот вопрос "слишком прост". Я полагаю, что этот человек не приложил никаких усилий, чтобы решить это самостоятельно. DevinB
@Devinb - третье правило SO - "Будьте милы" :). Вы делаете только предположения, многие люди чувствовали, что вопрос был достаточно хорош, чтобы ответить. Kev

Ваш Ответ

10   ответов
6
^\d{1,9}$

Так как вы не указали тип регулярного выражения, с которым вы работаете, это должно привести вас туда, где вам нужно. Если нет, сообщите нам, какую технологию regex вы используете.

Error: User Rate Limit Exceeded
23

Поскольку вы «спросили», как », я постараюсь объяснить это шаг за шагом. Поскольку вы не указали, какой тип регулярного выражения вы используете, я приведу примеры вPCRE а такжедва варианта регулярного выражения POSIX.

Заsimple В таких случаях вы должны думать о регулярном выражении как об автоматизации, принимая по одному символу за раз и говоря, когда он действителен (принимая символ) или нет. И после каждого символа вы можете указать квантификаторы, сколько раз он может появляться, например (на диалекте PCRE)* (ноль или более раз),+ (один или несколько раз) или{n,m} (отn вm раз). Тогда процесс строительства становится простым:

PRCE  | B.POSIX | E.POSIX   | Comments
------+---------+-----------+--------------------------------------------------
^     | ^       | ^         | Unless you are going to accept anything with 10
      |         |           | digits in it, you need to match start of data;
\d    | [0-9]   | [:digit:] | You need to match digits;
{1,10}| \{1,10\}| {1,10}    | You have to specify there is from 1 to 10 of them.
      |         |           | If you also wish to accept empty string — use 0;
$     | $       | $         | Then, data should end (unless see above).

Итак, результат^\d{1,10}$, ^[0-9]\{1,10}\$ или же^[:digit:]{1,10}$ соответственно.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

В Perl:

^\d{,9}$

Perldoc Perlretut хороший учебник по регулярным выражениям в Perl.

0

поиграть сhttp://gskinner.com/RegExr/

5

/\D\d{0,10}\D/ (при условии, что «меньше чем» включает в себя 0)

/\D\d{1,10}\D/ (если вы хотите от 1 до 10 цифр)

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

http://www.regexbuddy.com/

но я предлагаю разделить вопросы здесь: просто проверьте, равна ли длина строки & lt; = 10 символов после ввода, вам не нужно регулярное выражение для этого.

1

/ \ D \ d {, 9} \ D / в Perl

0

для "менее 10"; и, по крайней мере, 1, который вы хотели бы, предполагая, что это единственное значение ...

^\d{1,9}$
0

Это найдет хотя бы одну и не более 9 цифр подряд:

\d{1,9}

2

Я думаю, что это бы сработало:

^\d{1,10}$

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы