××××判断字符串左右两边是否有运算符的问题×××× 标准的正则表达式(?<左>.*[\+\-\*\/].*)=(?<右>.*[\+\-\*\/].*)呵呵,不知道js能不能用,一直没弄明白js支不支持?<xx>这种分组正则,js达人可否告知 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 见http://community.csdn.net/Expert/topic/4800/4800032.xml?temp=.988949已经把运算式拆分成数组了遍历结果数组分析一下不就知道了吗? 现在我的函数是固定的BNM(x) ,要验证用户输入的式子是否正确。例如:a+6-BNM(x)*8这个式子正确,而a+6-RBNM(x)*8错误,我的意思是怎么判断BNM(x)两边有没有运算符号,BNM(x)可以在公式的头和尾。 左右均有符号 (.*[\+\-\*\/].*)(BNM\(x\))(.*[\+\-\*\/].*)左边有符号:(BNM\(x\))(.*[\+\-\*\/].*)右边有符号:(.*[\+\-\*\/].*)(BNM\(x\))判断完后4种情况都要继续执行输出结果---eval() sorry,没仔细看题目重来;左右均有符号[\+\-\*\/](BNM\(x\))[\+\-\*\/] 左边有符号[\+\-\*\/](BNM\(x\))右边有符号:(BNM\(x\))[\+\-\*\/] 其实不需要判断的直接这样就成try{eval('a+6-BNM(x)*8');}catch{alert('公式有误');} <script>//a+6-BNM(x)*8这个式子正确,而a+6-RBNM(x)*8s = 'a+6-BNM(x)*8';foo(s);function foo(s) { var r = s.match(/\w+\(|\w+|\W/g); var r = s.match(/\w+|\W/g); var num = 0; for(var i=0; i<r.length; i++) { if(r[i] == '(') num++; if(r[i] == ')') num--; if(/^\w+$/.test(r[i])) { if(r[i+1] == '(' && r[i] != 'BNM') { alert('非法的函数 '+r[i]); return false; } if(i>0 && !/[*\/+\(-]/.test(r[i-1])) { alert('表达式非法 '+r.input); return false; } } } if(num != 0) { alert('括号不匹配'); return false; } return true;}</script>其实你需要检查的还不止这些,比如连续的运算符自己加上吧 js实现类似excel功能及界面的源码 提取alert对话框中的文字 菜鸟求助!【JS实现图片左右滚动效果】 代码都是什么意思呀? 用jquery或者Js怎么判断我网页的个window.open事件? 散一个模拟DIV滚动条实例 路过的大哥、大姐来帮帮我这个小白吧。 各位大哥帮帮忙! javascript代码,编辑、跟踪都有什么工具?谢谢。 求救:请看一下什么原因关于动态下拉列表的?谢谢了!! js验证表单在页面提示红色字体 firefox里不支持onChange事件,我想实现这个功能该怎么做? **请教大家都是用什么工具来编辑、调试Js的,给些比较好的方法?高分请答**
已经把运算式拆分成数组了
遍历结果数组分析一下不就知道了吗?
例如:a+6-BNM(x)*8这个式子正确,而a+6-RBNM(x)*8错误,我的意思是怎么判断BNM(x)两边有没有运算符号,BNM(x)可以在公式的头和尾。
左边有符号:(BNM\(x\))(.*[\+\-\*\/].*)
右边有符号:(.*[\+\-\*\/].*)(BNM\(x\))判断完后4种情况都要继续执行输出结果---eval()
重来;
左右均有符号[\+\-\*\/](BNM\(x\))[\+\-\*\/]
左边有符号[\+\-\*\/](BNM\(x\))
右边有符号:(BNM\(x\))[\+\-\*\/] 其实不需要判断的直接这样就成
try
{
eval('a+6-BNM(x)*8');
}
catch
{
alert('公式有误');
}
//a+6-BNM(x)*8这个式子正确,而a+6-RBNM(x)*8s = 'a+6-BNM(x)*8';
foo(s);function foo(s) {
var r = s.match(/\w+\(|\w+|\W/g);
var r = s.match(/\w+|\W/g);
var num = 0;
for(var i=0; i<r.length; i++) {
if(r[i] == '(') num++;
if(r[i] == ')') num--;
if(/^\w+$/.test(r[i])) {
if(r[i+1] == '(' && r[i] != 'BNM') {
alert('非法的函数 '+r[i]);
return false;
}
if(i>0 && !/[*\/+\(-]/.test(r[i-1])) {
alert('表达式非法 '+r.input);
return false;
}
}
}
if(num != 0) {
alert('括号不匹配');
return false;
}
return true;
}
</script>
其实你需要检查的还不止这些,比如连续的运算符
自己加上吧