PHP regex - действительный номер плавающей позиции

Я хочу, чтобы пользователь вводил только 0-9 и только один раз..

 patt = /[^0-9(.{1})]/

 1.2222 -> true
 1.2.2  -> false (only once '.')

помогите мне, спасибо!

Ответы

Ответ 1

/^-?(?:\d+|\d*\.\d+)$/

Это соответствует нормальным поплавкам, например. 3.14, сокращения для десятичной части только, например. .5 и целые числа, например. 9, а также отрицательные числа.

Ответ 2

это то, что вы ищете

$re = "~        #delimiter
    ^           # start of input
    -?          # minus, optional
    [0-9]+      # at least one digit
    (           # begin group
        \.      # a dot
        [0-9]+  # at least one digit
    )           # end of group
    ?           # group is optional
    $           # end of input
~xD";

это принимает только "123" или "123.456", а не ".123" или "14e + 15". Если вам нужны эти формы, попробуйте is_numeric

Ответ 3

Регулярные выражения предназначены для сопоставления строковых шаблонов. Если вы явно не указали формат входной строки (но фактическое значение), вы также можете использовать

filter_var("1.33", FILTER_VALIDATE_FLOAT);

чтобы убедиться, что вход может использоваться как значение поплавка. Это вернет FALSE, если это не float и float или целое значение в противном случае. Любые правила типа жонглирования применяются.

Ответ 4

Вы можете использовать is_numeric() с предостережением, что он принимает бит, более чем обычно требуется (например, 1e4).

Ответ 6

Это регулярное выражение:

\d*(?:\.\d+)?

даст результаты:

123 -> true
123.345 -> true
123. -> true
.345 -> true
0.3345 -> true

Однако вы должны проверить пустоту ввода перед его использованием, поскольку регулярное выражение также допускает ввод нулевой длины.

Ответ 7

Почему бы просто не использовать is_numeric, если вы не знакомы с регулярными выражениями.

Что касается вашего регулярного выражения: . соответствует всем символам, \. соответствует точке. {1} не требуется. И я не знаю, что вы пытаетесь сделать с [^ ... ]. Прочитайте учебник по регулярным выражениям, если вы действительно хотите использовать регулярные выражения где-то в вашем коде.