我正在构建一个普通的JS计算器,并尝试使用regex .test()函数来限制用户连续多次使用运算符


  即2 ++++ 3


它被构造为if else语句,问题在于regex测试是第一次运行,但是第二次失败,因此导致代码在不应该运行时跳转到else语句。我的正则表达式错了吗?我使用了错误的函数来运行比较吗?

var testOperands = /[+-/*=]/g;
switch (x) {

  case "+":
    if(testOperands.test(currentEntry[0])){
      currentArea.textcontent = x;
      totalArea.textContent = totalArea.textContent + "";
    } else {
    currentArea.textContent = x;
    totalArea.textContent = (totalArea.textContent + x);
    currentEntry = ["+"];
    totalEntry.push(x);
    }
    break;
  case "-":
    if(currentEntry[0] === "-"){
      currentArea.textcontent = x;
    } else {
    currentArea.textContent = x;
    totalArea.textContent = (totalArea.textContent + x);
    currentEntry = ["-"];
    totalEntry.push(x);
    }
    break;


这是完整的代码:https://codepen.io/brianofblades/pen/KQWVYN

最佳答案

您的正则表达式无效,需要对-进行转义:[+\-\/*=]

关于javascript - 为什么.test()函数对onclick行为不可靠?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48708300/

10-12 03:34