Regex в JavaScript для проверки десятичных чисел

Я хочу регулярное выражение в JavaScript для проверки десятичных чисел.

Он должен допускать только до двух знаков после запятой. Например, он должен разрешать 10.89, но не 10.899.

Он должен также допускать только один период (.). Например, он должен разрешать 10.89, но не 10.8.9.

Ответ 1

Попробуйте следующее выражение: ^\d+\.\d{0,2}$ Если вы хотите, чтобы десятичные знаки были необязательными, вы можете использовать следующее: ^\d+(\.\d{1,2})?$

EDIT: Чтобы проверить соответствие строки в Javascript, используйте следующий фрагмент:

var regexp = /^\d+\.\d{0,2}$/;

// returns true
regexp.test('10.5')

Ответ 2

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

позволит:

  • 244
  • 10.89
  • 9.5

запретит:

  • 10.895
  • 10.
  • 10.8.9

Ответ 3

Regex

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

демонстрация

var regexp = /^\d+(\.\d{1,2})?$/;

console.log("'.74' returns " + regexp.test('.74'));
console.log("'7' returns " + regexp.test('7'));
console.log("'10.5' returns " + regexp.test('10.5'));
console.log("'115.25' returns " + regexp.test('115.25'));
console.log("'1535.803' returns " + regexp.test('1535.803'));
console.log("'153.14.5' returns " + regexp.test('153.14.5'));
console.log("'415351108140' returns " + regexp.test('415351108140'));
console.log("'415351108140.5' returns " + regexp.test('415351108140.5'));
console.log("'415351108140.55' returns " + regexp.test('415351108140.55'));
console.log("'415351108140.556' returns " + regexp.test('415351108140.556'));

Ответ 4

Номера с не более чем двумя десятичными знаками:

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

Это должно работать нормально. Попробуйте:)

Ответ 5

См. мой проект кросс-браузерного фильтра значения элемента ввода текста на вашей веб-странице с использованием языка JavaScript: Input Key Filter. Вы можете отфильтровать значение как целое число, число с плавающей запятой или написать собственный фильтр, например, фильтр телефонных номеров. См. Пример пользовательского фильтра ввода числа с плавающей точкой с десятичным указателем и ограничения до 2-х цифр после десятичного указателя:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Input Key Filter Test</title>
	<meta name="author" content="Andrej Hristoliubov [email protected]">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	
	<!-- For compatibility of IE browser with audio element in the beep() function.
	https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible -->
	<meta http-equiv="X-UA-Compatible" content="IE=9"/>
	
	<link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css">		
	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script>
	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script>
	
</head>
<body>
	<h1>Float field</h1>
<input id="Float" 
	onchange="javascript: onChangeFloat(this)"
	onblur="inputKeyFilter.isNaN(parseFloat(this.value), this);"
/>
<script>
	function CreateFloatFilterCustom(elementID, onChange, onblur){
		try{
			inputKeyFilter.Create(elementID
				, onChange
				, function(elementInput, value){//customFilter
					if(value.match(/^(-?\d*)((\.(\d{0,2})?)?)$/i) == null){
						inputKeyFilter.TextAdd(isRussian() ?
								"Допустимый формат: -[0...9].[0...9] или -[0...9]e-[0...9]. Например: -12.34 1234"
								: "Acceptable formats: -[0...9].[0...9] or -[0...9]e-[0...9]. Examples: -12.34 1234"
							, elementInput);
						return false;
					}
					return true;
				}
				, onblur
			)
		} catch(e) {
			consoleError("Create float filter failed. " + e);
		}
	}
	
	CreateFloatFilterCustom("Float");
	
	function onChangeFloat(input){
		inputKeyFilter.RemoveMyTooltip();
		var elementNewFloat = document.getElementById("NewFloat");
		var float = parseFloat(input.value);
		if(inputKeyFilter.isNaN(float, input)){
			elementNewFloat.innerHTML = "";
			return;
		}
		elementNewFloat.innerHTML = float;
	}
</script>
 New float: <span id="NewFloat"></span>
</body>
</html>

Ответ 6

Я обнаружил, что могу использовать

^\d+(\.\d+)?$

для более чем двух знаков после запятой.

Ответ 7

Попробуйте регулярное выражение:

(?=[^\0])(?=^([0-9]+){0,1}(\.[0-9]{1,2}){0,1}$)

Разрешено: 1, 10.8, 10,89, 0,89, 0,89, 1000

Не разрешено: 20., 50.89.9, 12,999, ., Нулевой символ Обратите внимание, что это работает для положительных чисел

Ответ 8

по сравнению с ответом gven на микрофон... он не проверяет что-либо на некоторых платформах, над которыми я работаю... точнее, это действительно не работает в Dream Viewer..

настоящий.. я снова запишу его..., который будет работать на любой платформе. "^ [0-9] + (. [0-9] {1,2})? $".. thnkss..

Ответ 9

 function CheckValidAmount() {
        var amounttext = document.getElementById('txtRemittanceNumber').value;            
        if (!(/^[-+]?\d*\.?\d*$/.test(amounttext))){
            alert('Please enter only numbers into amount textbox.')
            document.getElementById('txtRemittanceNumber').value = "10.00";
        }
    }

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

Спасибо... :)

Ответ 10

Надеюсь, что это решит вашу проблему! Пользовательская директива для отображения только требуемых десятичных знаков

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

Ответ 11

Схема для передачи значения в виде строки. Регулярное выражение проверяет строку, состоящую как минимум из одной цифры, за которой, возможно, следует точка и ровно две цифры:

{
    "type": "string",
    "pattern": "^[0-9]+(\\.[0-9]{2})?$"
}

Схема ниже эквивалентна, за исключением того, что она также допускает пустые строки:

{
    "type": "string",
    "pattern": "^$|^[0-9]+(\\.[0-9]{2})?$"
}

Ответ 12

Это работает?

[0-9]{2}.[0-9]{2}