Ответ 1
/^-?(?:\d+|\d*\.\d+)$/
Это соответствует нормальным поплавкам, например. 3.14
, сокращения для десятичной части только, например. .5
и целые числа, например. 9
, а также отрицательные числа.
Я хочу, чтобы пользователь вводил только 0-9 и только один раз..
patt = /[^0-9(.{1})]/
1.2222 -> true
1.2.2 -> false (only once '.')
помогите мне, спасибо!
/^-?(?:\d+|\d*\.\d+)$/
Это соответствует нормальным поплавкам, например. 3.14
, сокращения для десятичной части только, например. .5
и целые числа, например. 9
, а также отрицательные числа.
это то, что вы ищете
$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
Регулярные выражения предназначены для сопоставления строковых шаблонов. Если вы явно не указали формат входной строки (но фактическое значение), вы также можете использовать
filter_var("1.33", FILTER_VALIDATE_FLOAT);
чтобы убедиться, что вход может использоваться как значение поплавка. Это вернет FALSE
, если это не float и float или целое значение в противном случае. Любые правила типа жонглирования применяются.
Вы можете использовать is_numeric()
с предостережением, что он принимает бит, более чем обычно требуется (например, 1e4
).
Почему бы не использовать http://php.net/manual/en/function.is-float.php? Но в любом случае RegEx будет ^[\d]+(|\.[\d]+)$
получайте удовольствие!
Это регулярное выражение:
\d*(?:\.\d+)?
даст результаты:
123 -> true
123.345 -> true
123. -> true
.345 -> true
0.3345 -> true
Однако вы должны проверить пустоту ввода перед его использованием, поскольку регулярное выражение также допускает ввод нулевой длины.
Почему бы просто не использовать is_numeric
, если вы не знакомы с регулярными выражениями.
Что касается вашего регулярного выражения: .
соответствует всем символам, \.
соответствует точке. {1}
не требуется. И я не знаю, что вы пытаетесь сделать с [^ ... ]
. Прочитайте учебник по регулярным выражениям, если вы действительно хотите использовать регулярные выражения где-то в вашем коде.