Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
tolik
Зарегистрирован: 23.01.2003 Сообщения: 21
|
Добавлено: Вс Ноя 11 2001 17:05 Заголовок сообщения: Регулярные выражения в перле |
|
|
Необходимо составить регулярное выражение, чтобы оно анализировало входные данные. В строке ввода должны быть только чсла (вещественные), чтобы нельзя было ввести никаких специальных символов (!"№;%*()_+=- и т.д.). Т.е. должны вводиться только числа в форматах: 1, 1.5, 0, 0.5, +1, -0.5, -2, + 1.5, 11.5 и т.д., и число после запятой не может содержать больше 1-й цифры. Дело в том что мой скрипт должен работать с числами (выполнять математические операции), а если в него введут что-то типа !"№;%;%*()_+-=0 и т.п. то он просто не сможет всё корректно посчитать а значит и правильно сработать. |
|
Вернуться к началу |
|
|
Прохожий Гость
|
Добавлено: Пн Ноя 12 2001 10:25 Заголовок сообщения: Re: Регулярные выражения в перле |
|
|
если проверить на /^[\+-]{0,1}\s{0,1}\d{1,}\.{0,1}\d{0,1}$/ то числа из примера пройдут, а, например, --1, 1.55, +-2 - нет. Спецсимволы, естессно, не пройдут вообще. |
|
Вернуться к началу |
|
|
Dae Гость
|
Добавлено: Чт Ноя 22 2001 22:01 Заголовок сообщения: Re: Регулярные выражения в перле |
|
|
Наилучшим является следующее:
print "Enter a number :"; chop ($_=);
if (/^([+-]?)((?:\d|\.\d)\d*(?:\.\d*)?)(?:[Ee]([+-]?\d+))?$/) { print "$_ is a number :$1", $2*exp($3*log(10)) ,"\n"; } else { print "$_ isn't a number\n" } |
|
Вернуться к началу |
|
|
|