读书人

求1验证带括号的四则运算式的正则表达

发布时间: 2012-08-08 14:32:45 作者: rapoo

求一验证带括号的四则运算式的正则表达式
求一正则表达式是否符合运算规则
如: 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

读书人网 >JavaScript

热点推荐