我有一个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"/>


我想以某种方式增强我的代码,以限制用户输入相同数字的多个小数(如下所示),同时仍允许计算字符串中的多个小数(也如下所示):

避免这种情况-

javascript - 防止在计算字段中出现多个小数点-LMLPHP

但是允许这个-

javascript - 防止在计算字段中出现多个小数点-LMLPHP

我已经研究了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/

10-14 17:58