Как правило, я бы предостерегал от использования регулярных выражений для анализа чисел, поскольку для этого обычно есть более подходящие решения, чем регулярные выражения, но поскольку вы спрашиваете, я постараюсь помочь вам с этим:
preg_match
использует регулярные выражения (регулярные выражения) для сопоставления.
Подробнее о синтаксисе регулярных выражений можно узнать на таких сайтах, как http://www.regular -expressions.info /
Если вы хотите сопоставить цифру в регулярном выражении, вы можете использовать [0-9]
или \d
.
Если вы хотите сопоставить одно или несколько значений, вы должны использовать знак плюс.
Наконец, строки регулярных выражений должны быть заключены в пару символов.Выбранный символ обычно является символом косой черты (/
), поскольку некоторые языки специально требуют этот символ, но PHP также позволяет использовать другие символы;тильда (~
) довольно распространена.
Таким образом, ваша строка регулярного выражения, соответствующая любому количеству цифр, будет "/\d+/"
.Затем его можно поместить в вызов preg_match
следующим образом:
$isnumeric = preg_match("/\d+/",$input_string);
Если у вас есть более конкретные требования, вы можете ограничить количество разрешенных символов, заменив знак плюс на {max}
или * 1027.* где 'min' и 'max' - количество разрешений предыдущего совпадения.Таким образом, чтобы разрешить число от двух до шести цифр, вы должны использовать это:
$isnumeric = preg_match("/\d{2,6}/",$input_string);
Если вам нужно разрешить десятичную точку, вы должны знать, что символ точки является специальным символом в регулярном выражении (это означает «совпадать с любым символом вообще»), поэтому вам нужно избегать его с обратной косой чертой.
Следовательно, регулярное выражение для сопоставления суммы валюты с двумя десятичными знаками и по крайней мере одной цифрой передточка будет выглядеть следующим образом:
$isnumeric = preg_match("/\d+\.\d\d/",$input_string);
Наконец, обратите внимание, что регулярное выражение вернет true во всех вышеперечисленных случаях, если строка просто содержит соответствующее значение.Чтобы убедиться, что он не содержит ничего другого, вам нужно «привязать» его к началу и концу строки, используя символы привязки: ^
для начала строки и $
для конца.
Так что для предыдущего примера, если вы хотите, чтобы only содержал десятичное число, и ничего больше, вам понадобится следующее:
$isnumeric = preg_match("/^\d+\.\d\d$/",$input_string);
Regex - этосложная тема, но я надеюсь, что это даст вам начало.