Проверка строк на соответствие числам
Проблема
Требуется проверить, соответствует ли строка допустимому числу. Эта проблема часто
возникает при проверке входных данных (например, в сценариях CGI).
Решение
Сравните строку с регулярным выражением, которое совпадает со всеми интересующими вас разновидностями чисел:
if ($stnng =" /PATTERN/) {
# является числом
} else {
# не является числом
}
Комментарий
Все зависит от того, что именно понимать под числом. Даже простые на первый взгляд понятия —
например, целое — заставят вас поломать голову над тем, какие строки следует отнести к этой категории.
Например, что делать с начальным + для положительных чисел? Разрешить, сделать обязательным или запретить?
А числа с плавающей запятой представляются таким огромным количеством способов, что у вас в голове
перегреется процессор.
Сначала решите, какие символы допустимы, а какие — нет. Затем сконструируйте для отобранных
символов регулярное выражение. Ниже приведены некоторые стандартные конструкции для самых
распространенных ситуаций.
# Содержит нецифровые символы
if /\D/;
# Не является натуральным числом
unless /^\d+$/; # Отвергает -3
# He является целым числом
unless /^-?\d+$/; # Отвергает +3
unless /^[+-]?\d+$/;
# He является десятичным числом
unless /^-?\d+\.?\d*$/; # Отвергает .2
unless /^-?(?:d+(?:\.\d*)?|\.\d+)$/;
# Не является вещественным числом С
unless /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/;
См. также
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|