我有一个JavaScript计算器,它使用以下代码来处理计算输入字段中的小数点(也在下面):
$('#button-dot').click(function() {
var lastChar = $('#disp').val().slice(-1);
var firstChar = $('#disp').val().slice(0);
if ($('#disp').hasClass("result")) {
$('#disp').removeClass("result").val("");
addChar(this.form.display,'0' + '.');
}
else if (lastChar == '.'){
// DO NOTHING
}
else if (lastChar == '1' || lastChar == '2' || lastChar == '3' || lastChar == '4' || lastChar == '5' || lastChar == '6' || lastChar == '7' || lastChar == '8' || lastChar == '9' || lastChar == '0' && firstChar != '0'){
addChar(this.form.display,'.');
}
else if (firstChar == '0'){
addChar(this.form.display,'0' + '.');
}
else {
addChar(this.form.display,'0' + '.');
}
$('#disp').removeClass("result");
});
addChar
函数由以下形式给出:function addChar(input, character) {
if (input.value == null || input.value == "0" ) {
input.value = character
}
else {
input.value += character
}
};
和输入字段:
<INPUT NAME="display" ID="disp" VALUE="0" SIZE="28" MAXLENGTH="25"/>
我想以某种方式增强我的代码,以限制用户输入相同数字的多个小数(如下所示),同时仍允许计算字符串中的多个小数(也如下所示):
避免这种情况-
但是允许这个-
我已经研究了
regex
,因为我知道我的问题的解决方案可能会以某种方式涉及到它,但是我不确定如何实现它(我的JavaScript技能仍在开发中!)。我还考虑过用任何操作数(
-,+,/,*,%
)拆分字符串,并检查结果数组的每个元素是否有小数点,但我认为这可能有点混乱。有任何想法吗?
最佳答案
您可以使用单个正则表达式轻松完成此操作:^(?:(?:\d+(?:\.\d*)?|\.\d+)(?:[-+/*%]|$))+$
说明
^ # Begin of string
(?: # Group
(?: # A number
\d+
(?: \. \d* )?
| \. \d+
)
(?:
[-+/*%] # Operator
| # or,
$ # EOS
)
)+ # End group, do 1 to many times
$ # End of string
关于javascript - 防止在计算字段中出现多个小数点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35027346/