日期:2014-05-16 浏览次数:20469 次
//这里需要用到平衡组 而且只是正整数的四则混合运算,如果需要小数或者负数的 修改对应“(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,加一简单正则进行判断
<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>
------解决方案--------------------
可以不用正则判断
<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>
------解决方案--------------------
真搞笑,好像正则是万能的一样
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