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

Использование typedef избавляет от необходимости писать struct каждый раз, когда вы объявляете переменную этого типа:

struct elem
{
 int i;
 char k;
};
elem user; // compile error!
struct elem user; // this is correct
9
задан drdaeman 23 June 2009 в 14:52
поделиться

10 ответов

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

Для простых случаев таким образом, вы должны думать о регулярном выражении как об автоматизации, принимая по одному символу за раз и говоря, когда он действителен (принятие символа) или нет. И после каждого символа вы можете указать кванторы, сколько раз он может появляться, например (на диалекте 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} $ соответственно.

25
ответ дан 4 December 2019 в 06:17
поделиться
^\d{1,9}$

Это будет соответствовать любой цифре от 1 до 9.

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

6
ответ дан 4 December 2019 в 06:17
поделиться

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

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

5
ответ дан 4 December 2019 в 06:17
поделиться

В Perl:

^\d{,9}$

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

2
ответ дан 4 December 2019 в 06:17
поделиться

Я думаю, это поможет:

^ \ d {1,10} $

2
ответ дан 4 December 2019 в 06:17
поделиться

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

1
ответ дан 4 December 2019 в 06:17
поделиться

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

\ d {1,9}

0
ответ дан 4 December 2019 в 06:17
поделиться

для «менее 10» и как минимум 1, если это единственное значение ...

^\d{1,9}$
0
ответ дан 4 December 2019 в 06:17
поделиться

http://www.regexbuddy.com/

но я бы предложил разделить проблемы здесь, просто проверьте, составляет ли длина строки <= 10 символов после ввода, для этого не требуется регулярное выражение.

0
ответ дан 4 December 2019 в 06:17
поделиться

have a play around with http://gskinner.com/RegExr/

0
ответ дан 4 December 2019 в 06:17
поделиться
Другие вопросы по тегам:

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