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})?$
позволит:
запретит:
Ответ 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}