JS:
<script>
$(document).ready(function () {
$("#Salary").keyup(function (e) {
var isFloatNumber = IsFloatOnly('input#Salary');
if (!isFloatNumber) {
e.preventDefault();
$("#ErrorMessage").text('Invalid value. Please enter numeric value.');
}
else {
$("#ErrorMessage").text('Success.');
}
});
});
function IsFloatOnly(element) {
var value = $(element).val();
var regExp = "^\\d+(\\,\\d+)?$";
return value.match(regExp);
}
</script>
HTML
<input type="Text" id="Salary" maxlength="20" name="Salary" />
<label id="ErrorMessage"></label>
问题:
如果我写下如下的值,
100,00
100,00没关系。消息显示成功
然而
如果我写下如下的值,
1,000,05
10,000,00
错误消息显示无效值。
根据我在javascript中的正则表达式,我如何允许 1,000,05 和 10,000,00 值成功?
由于
答案 0 :(得分:0)
你的正则表达式只允许一个逗号。 ?
量词表示零或前一个元素之一。如果您想允许任意数量的这些,请使用*
。
var regExp = /^\d+(,\d+)*$/;
另外,使用RegExp文字,这样你就不必逃避反斜杠。并且没有必要在正则表达式中删除逗号。
$(document).ready(function() {
$("#Salary").keyup(function(e) {
var isFloatNumber = IsFloatOnly('input#Salary');
if (!isFloatNumber) {
e.preventDefault();
$("#ErrorMessage").text('Invalid value. Please enter numeric value.');
} else {
$("#ErrorMessage").text('Success.');
}
});
});
function IsFloatOnly(element) {
var value = $(element).val();
var regExp = /^\d+(,\d+)*$/;
return value.match(regExp);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="Text" id="Salary" maxlength="20" name="Salary" />
<label id="ErrorMessage"></label>
&#13;
答案 1 :(得分:0)
将正则表达式更改为 var regExp =&#34; ^ \ d +(\,\ d +)* $&#34 ;; 它适用于任意数量的逗号分隔数字