Проверка строк на соответствие числам

Проблема

Требуется проверить, соответствует ли строка допустимому числу. Эта проблема часто возникает при проверке входных данных (например, в сценариях 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+))?$/;

См. также




2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: