检测重复字符背靠背Javascript

时间:2017-01-07 07:40:38

标签: javascript

我正在构建一个JavaScript计算器,一切都已完成,除了有一个问题。当用户键入:

3**3 or 7++2 

这会产生一个解析错误 - 如何检测是否有重复的重复?

如果我们查看字符串3+3+3*2,可以安全使用,请考虑我们是否使用字符串3++3+2,因为返回后会被标记为 - + 是不允许的。

因此,如果有两个相同 Type或Ascii值的字符,则将该字符串标记为不安全使用。

2 个答案:

答案 0 :(得分:2)



var regexp = /(\+\+|\-\-|\*\*)/;
regexp.test("22++33");




根据相同的建议,您可以通过正则表达式轻松获得匹配。

答案 1 :(得分:2)

您可以在控制台中获取最后一项,如果是操作员,则return false。考虑一下:

var operator = "/*+-^";
var arithmetic = "", lastItem;


 $("span").click(function(){
    // check if number is clicked    
      if($(this).hasClass("num")){
        $("#console").append($(this).text());
        arithmetic += $(this).text();
      }

      //get the last item on the console or in arithmetic string
    lastItem = arithmetic.substr(arithmetic.length-1, arithmetic.length);
    //check if last item is an operator, prevent click of an operator again
      if($(this).hasClass('operator')){
          if(operator.indexOf(lastItem) > -1){
            return false;
          }
          else{
              $("#console").append($(this).text());
              arithmetic += $(this).text();
          }

      }// end if --> checking operator ended.
    if($(this).hasClass('equal')){
         $("#result").append(eval(arithmetic));
          }
      
    });
span{
  padding: 5px;
  background: #ccc;
  margin: 5px;
  cursor: pointer;
  text-align: center;
  -moz-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="num">1</span>
<span class="num">2</span>
<span class="num">3</span>
<span class="operator">+</span>
<span class="operator">*</span>
<span class="equal">=</span><br/><br/>

<div id="console"> </div> <br/>
<div id="result"> </div>