检测背靠背Javascript中的重复字符

检测背靠背Javascript中的重复字符,javascript,Javascript,我正在构建一个JavaScript计算器,一切都完成了,除了一个问题。当用户键入时: 3**3 or 7++2 这带来了一个解析错误-如何检测是否存在背对背的重复 如果我们看字符串3+3+3*2,使用起来会很安全,如果我们使用字符串3++3+2,它会被标记,因为背对背的+是不允许的 因此,如果有两个字符的类型或Ascii值相同,则将该字符串标记为不安全使用。 var regexp=/(\+\+\\\-\-\-\\\*\*)/; regexp.test(“22++33”)您可以在控制台中获取最

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

3**3 or 7++2 
这带来了一个解析错误-如何检测是否存在背对背的重复

如果我们看字符串
3+3+3*2
,使用起来会很安全,如果我们使用字符串
3++3+2
,它会被标记,因为背对背的+是不允许的

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

var regexp=/(\+\+\\\-\-\-\\\*\*)/;

regexp.test(“22++33”)
您可以在控制台中获取最后一项,如果它是操作员,则
返回false
。考虑这一点:

var运算符=“/*+-^”;
var算术=”,最后一项;
$(“span”)。单击(函数(){
//检查是否单击了数字
if($(this).hasClass(“num”)){
$(“#控制台”).append($(this.text());
算术+=$(this).text();
}
//获取控制台上或算术字符串中的最后一项
lastItem=算术.substr(算术.length-1,算术.length);
//检查最后一项是否为运算符,防止再次单击运算符
if($(this).hasClass('operator')){
if(运算符索引(lastItem)>-1){
返回false;
}
否则{
$(“#控制台”).append($(this.text());
算术+=$(this).text();
}
}//如果-->检查运算符结束,则结束。
if($(this).hasClass('equal')){
$(“#结果”).append(eval(算术));
}
});
span{
填充物:5px;
背景:#ccc;
保证金:5px;
光标:指针;
文本对齐:居中;
-moz用户选择:无;
-webkit用户选择:无;
-ms用户选择:无;
}

1.
2.
3.
+
*
=



这与HTML有什么关系?当我们没有关于如何解析字符串的信息时,我们如何知道如何检测背对背的重复字符?是否希望regexp检测任何重复字符?然后谷歌搜索“javascript regexp backreference”,和/或尝试
/()\1/
。即使正则表达式工作,你也不应该这样做。这不是正确的方法。如果你想让你的计算器有一些复杂的表达式呢?你需要的是一个解析算法。首先将字符串分解成标记,然后使用
递归体面解析
技术。如果你坚持使用简单的方法,你可以查找
调车场
算法。它可能会花你一些时间,但你会走上正轨。基本上,用户在计算器上按一个数字,表达式以字符串形式返回,我使用math.js来计算字符串。它实际上对任何计算都非常有效。但这只是为了好玩。我来举个例子看看吧,谢谢。这就是我要找的