Предотвращение нескольких десятичных точек - PullRequest
1 голос
/ 30 августа 2011

Я не специалист по информатике и пытаюсь выяснить, как запретить пользователю вводить более одной десятичной точки. Например, как мне помешать кому-то войти в 3..5?

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Фон, приведенный в вопросе, практически не существует, но правильным способом сделать это будет попытка проанализировать ввод с любым языком, который вы используете, и, если он потерпит неудачу, отклонить его. Но если вы хотите регулярное выражение:

^\d+\.\d+$    # allows numbers with a single decimal point; 
                fails if it doesn't have one
^\d+(\.\d+)?$ # allows numbers with a decimal point or without one

Обратите внимание, что эти регулярные выражения допускают неограниченное количество цифр по обе стороны от десятичной точки. Если вы хотите указать количество цифр, вы можете использовать {m...n} вместо + quantifier:

^\d{1,3}\.\d{1,3}$   # allows numbers from 0.0 to 999.999

РЕДАКТИРОВАТЬ: Если вы хотите разрешить ввод в форме .25, как подсказывает tchrist, вы можете использовать:

^\d*\.\d+?$ 
0 голосов
/ 30 августа 2011

Попробуйте это:

m{
    ^ (?: \. \d{1,2}   # eg: ".25"
        | \d+          # eg: "2343409823409823049823094823094820389402984230948"
              (?:
                  \. \d{0,2}
              )?       #  eg: "186282.42"
      ) 
    $
}x
0 голосов
/ 30 августа 2011

Для числа с плавающей запятой, т. Е. ###. ##, вы можете сопоставить

^[0-9]+[.]{1}[0-9]{1,2}$

Это позволит использовать любое количество цифр, после которого следует один десятичный знак (обязательно), за которым следует один или2 цифры.

...