вы можете разбить ваш шаблон в 3 шага:
Первый шаг
Вам нужно по крайней мере 8 цифр + 1 или 2 точности, которые оба являются необязательными
\d{8}\.?\d?\d?
Здесь .
и обе цифры являются необязательными
Второй шаг
Вам нужно по крайней мере 9 цифр + 1 точность и это его
\d{9}\.?\d?
Здесь .
и цифры не являются обязательными
Затем вы можете смешать эти три правила вместе с или |
ключевое слово
^(\d{8}\.?\d?\d?|\d{9}\.?\d?)$
Хорошо, теперь это регулярное выражение соответствует только 7 до 10 цифр с 1 или 2 точность
Это не соответствует менее 8 цифр и сложная часть здесь, что вы можете изменить второй шаг\d{8}
с \d{1,8}
, а затем он соответствует от 1 до 9999999999 и плюс точность 1 или 2.
, что вы хотите:
^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$
echo 1 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
1
echo 9999999999 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
9999999999
echo 1.1 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
1.1
echo 1.12 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
1.12
echo 1234567.1 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
1234567.1
echo 1234567.12 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
1234567.12
echo 99999999.9 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
99999999.9
echo 99999999.99 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
99999999.99
не совпадают
echo 1.111 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
echo 1234567.111 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
echo 123456781.11 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
echo 1234567891.1 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
echo 123456789101 | perl -lne '/^(\d{1,8}\.?\d?\d?|\d{9}\.?\d?)$/ && print $&'
Вопросы, начинающиеся с 'Я want', не проявляя никаких усилий, как правило, не очень хорошо получил – baao
Почему' 1234567.1 (всего 8 цифр) 'действительный пример? – Toto
Какой язык программирования вы используете? – baao