标准的正则表达式
(?<左>.*[\+\-\*\/].*)=(?<右>.*[\+\-\*\/].*)呵呵,不知道js能不能用,一直没弄明白js支不支持?<xx>这种分组正则,js达人可否告知
(?<左>.*[\+\-\*\/].*)=(?<右>.*[\+\-\*\/].*)呵呵,不知道js能不能用,一直没弄明白js支不支持?<xx>这种分组正则,js达人可否告知
解决方案 »
- extjs3.x 下拉树问题请教!
- GeryBox中下一页
- 关于字符计算中文的问题,在线等,进来就给分
- 求助,设置表格的属性的这两句有什么区别吗?
- 急问:使用javascript时xsl再调用xsl的问题(高难度)
- 大家帮忙优化一下,急!!
- 【200分】收集经典实用的javascript程序。算法、特效、功能不限。原创更佳,欢迎大家交流~~~
- 如何设置打印预览的比例?
- 如何用脚本写一个图片浏览的控件?
- 怎样使alert()弹出的警告框中的内容换行?警告框中的内容比较长,把内容根据需要换行
- 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>
其实你需要检查的还不止这些,比如连续的运算符
自己加上吧