RegularExpression для проверки текстового поля, которое должно разрешать только десятичные и числовые значения - PullRequest
3 голосов
/ 05 января 2009

У меня есть текстовое поле для 'Площадь'. Мне нужно регулярное выражение для проверки текстового поля, чтобы оно позволяло вводить десятичные дроби, но без символов. Любой может помочь мне

Ответы [ 9 ]

5 голосов
/ 05 января 2009

Почему бы не попробовать то, что уже встроено в JavaScript: функция parseFloat ?

2 голосов
/ 05 января 2009

Это регулярное выражение может проверять целые числа и необязательные числа с плавающей запятой:

[0-9]*\.?[0-9]+

И вместо регулярных выражений вы можете использовать isNaN (значение), чтобы проверить, не является ли числовое значение числом (NaN).

1 голос
/ 05 января 2009

Как насчет

[-+]?(?:\d\,?){0,}(?:\.\d*)?

Он будет соответствовать всем следующим примерам, имеющим *:

0 *
0.0 *
222,0 *
1 000,00 *
100 000,00 *
-100 000 000 000,12 *
asdf
бла-бла

1 голос
/ 05 января 2009

Какой формат десятичных чисел вы будете поддерживать в своей области?

Это «Простое регулярное выражение для десятичных чисел?» В StackOverflow подробно описаны возможные регулярные выражения.

^\d+(\.\d{1,2})?$

Может обеспечить число с одним или двумя десятичными знаками, но не будет работать с 34. (точка без десятичной дроби)

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

Unkwntech является хорошим полным регулярным выражением, но допускает 1,15223,11,00.

Я бы лучше использовал:

[-+]?(?:\d(\,?(?>\d{3}[.,]))?)*(?:\.\d*)?

Значение, если вы используете ,, делайте это только в том случае, если за ним следуют 3 цифры (а затем еще одна , или точка для десятичных значений. Это обеспечивает цифровую группировку , хотя, как указал Пол в комментариях, есть локаль с более чем тремя цифрами после запятой ...

0 голосов
/ 11 января 2018

Хотя я все равно очень опаздываю ...

Теперь у нас есть <input> элементы типа number, которые позволяют пользователю вводить число. Они включают встроенную проверку для отклонения нечисловых записей. Подробнее

<input id="number" type="number">
0 голосов
/ 05 января 2009

Вы также можете использовать функцию isFinite:

http://www.w3schools.com/jsref/jsref_isFinite.asp

0 голосов
/ 05 января 2009

Для десятичных значений вы также должны разрешить [.], Так что это должно работать для вас:

^[-+]?\d*\.?\d*$

(Это также принимает символы + и -)

Более точное выражение можно получить из RegExLib здесь .

0 голосов
/ 05 января 2009

Если вы хотите десятичные дроби, это должно работать:

/^(?:\d+\.?)|(?:\d*\.\d+)$/
0 голосов
/ 05 января 2009

'^[0-9]*$'

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