求一正则表达式是否符合运算规则
如: 1+6*(2+(3-1)/1+(9-5*1))
------解决方案--------------------
- JScript code
//这里需要用到平衡组 而且只是正整数的四则混合运算,如果需要小数或者负数的 修改对应“(0|[1-9][0-9]*)”即可 /^((0|[1-9][0-9]*)([-+*/](0|[1-9][0-9]*))*[-+*/]?)*(((?<K>\()((0|[1-9][0-9]*)+([+*/-](0|[1-9][0-9]*))*)+[-+*/]?)+((?<-K>\))([-+*/](0|[1-9][0-9]*)[-+*/]?)*)+)*((0|[1-9][0-9]*)([-+*/](0|[1-9][0-9]*))*)*$/
------解决方案--------------------
可以考虑用eval,加一简单正则进行判断
- JScript code
<script> var s = '1+6*(2+(3-1)/1+(9-5*1))'; if(s.match(/[^\+\-\*\/0-9()]/)) { alert('illegal!') } else { try { alert(eval(s)); } catch(e) { alert('illegal') } } </script>
------解决方案--------------------
可以不用正则判断
- JScript code
<script> var str = "1+6*(2+(3-1)/1+(9-5*1))"; try{ eval("var ret = "+str); if(ret!=Infinity){ alert("right"); }else{ alert("wrong"); } }catch(e){ alert("wrong"); } </script>
------解决方案--------------------
真搞笑,好像正则是万能的一样
- JScript code
function test(s){ try{ return !isNaN(eval("("+s+")")); }catch(e){ return false; } } alert(test("1+6*(2+(3-1)/1+(9-5*1))"));
------解决方案--------------------
这里用正则就是一种浪费,用eval简单又好用
------解决方案--------------------
eval