Как использовать preg_match для -, +,.ценности? - PullRequest
1 голос
/ 15 июня 2011

Я использую это preg_match условие для сопоставления положительных, отрицательных и десятичных значений

/^[0-9,-\.]{1,50}$/

Но когда я ввожу --34.000, он не показывает ошибку, когда я ввожу 34 ... 9868 -не показывать ошибку, я хочу, чтобы она принимала только положительные, отрицательные и десятичные значения.

Ответы [ 4 ]

4 голосов
/ 15 июня 2011

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

/^-?[0-9]+(?:\.[0-9]+)?$/

Объяснение:

  • соответствует началу строки(^)
  • соответствует возможному - символу (-?);? означает «не требуется»
  • соответствует хотя бы одному номеру ([0-9]+)
  • возможно соответствует целому выражению в скобках ((?:...)?);?: означает «не захватывать подшаблон»
    • точка (\.);. необходимо экранировать из-за его специальной функции
    • хотя бы одного числа ([0-9]+)
  • соответствия конца строки ($)
4 голосов
/ 15 июня 2011

Лучше, если вы используете что-то вроде is_numeric(), если вам нужно проверить, является ли это число.

И ваше регулярное выражение полностью сломано, потому что теперь оно может принимать даже только строку, содержащую 50 точек

2 голосов
/ 15 июня 2011

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

/^[+\-]?([0-9]+,)*[0-9]+(\.[0-9]+)?$/

Чтобы объяснить это выражение:

[+\-]?: проверка префикса + или - к номеру. Это совершенно необязательно, но может быть только + или -.

([0-9]+,)*: это позволяет дополнительный набор чисел, разделенных запятыми. Это для тысяч, миллионов и т. Д.

[0-9]+: для этого необходимо, чтобы значение содержало хотя бы несколько чисел

(\.[0-9]+)?: Наконец, это позволяет указывать опциональную десятичную точку с конечными числами.

0 голосов
/ 15 июня 2011

попробуйте это регулярное выражение ^-?\d*\.?\d+$ Полагаю, его нельзя ограничить 50 символами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...