高分求一验证string 为带括号四则运算表达式 的正则表达式,大侠们乱入,小虾们顶者有分 四则运算表达式,例如:-23+(12.2+6)*(-5)-5/10,验证格式是否正确,有负号,有小数点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ^(\(?[+-]?\(?\d+\.?\d*\)?[+-/\*]\(?[+-]?\(?\d+\.?\d*\)?)+$用这个匹配应该就可以的, look一下h_lj(贝塔) 的表达式,如果正确就给分 ^[\(+-]?\(?\d+\.?\d*\)?([+-/\*]\(?[+-]?\(?\d+\.?\d*\)?)+用下这个另,匹配成功后,还应判断括号是否匹配首先确定是否有括号,如有用下面的表达式匹配(.*?\(.*?\))+一时也想不到什么简便的方法,请楼主试试 没想出好的来,不过我看了上面贴出的^[\(+-]?\(?\d+\.?\d*\)?([+-/\*]\(?[+-]?\(?\d+\.?\d*\)?)+不行,只能验证包含符号什么的,当事实上验证不了许多运算规则。 其实也可以就简单try catch一下,如果计算成功说明运算表达式没错,如果抛出异常,说明运算表达式不对。 你用的是javascript的,还是net的? 个人认为: 正则表达文法只能解决语言中单词组成等问题,比如描述表示浮点数,e_mail的字符串,而对于数学表达式、语句等复杂的结构问题的讨论似乎不是正则文法所能解决的。用正则表达式来判断数学表达式的合法性在理论上都是存在问题的,而此类问题应该由上下文无关语言来解决而不是正则文法,除此之外,也可以一些数学方法来解决。 写了一个数学表达式计算器,在数学表达式的逻辑错误判断方面费了不少心思,问题解决得虽算不上完美,但效果还不错,比如5.3+sin5/(cosln5!+sin/6)-78.6/67.7^5将给出如下报错信息:"在第 2 个 / 附近存在逻辑错误"感兴趣的话,可以e_mail:[email protected] [高分求助]s1=string.Concat(s1,s2) 与 s1+=s2 的区别 c# 子窗口的变量a怎样获得另一个窗口中的textBox1的数据 datagrid升级到datagridview后的问题 现在遇到一个很奇怪的问题! linq怎么合并datatable的行 这段代码为什么有错 --------请API高手看看??????? 在线等!! 关于lucene、全文检索、搜索引擎、倒排索引的疑问 winform 中怎么保存这个图片 没办法,在vb.net没人回答!请帮帮忙吧! 如何获得存储在DataSet中的表的记录数? 初学者的菜鸟问题!!!
用这个匹配应该就可以的,
用下这个
另,匹配成功后,还应判断括号是否匹配
首先确定是否有括号,如有用下面的表达式匹配
(.*?\(.*?\))+一时也想不到什么简便的方法,请楼主试试
^[\(+-]?\(?\d+\.?\d*\)?([+-/\*]\(?[+-]?\(?\d+\.?\d*\)?)+
不行,只能验证包含符号什么的,当事实上验证不了许多运算规则。
正则表达文法只能解决语言中单词组成等问题,比如描述表示浮点数,e_mail的字符串,而对于数学表达式、语句等复杂的结构问题的讨论似乎不是正则文法所能解决的。用正则表达式来判断数学表达式的合法性在理论上都是存在问题的,而此类问题应该由上下文无关语言来解决而不是正则文法,除此之外,也可以一些数学方法来解决。
比如5.3+sin5/(cosln5!+sin/6)-78.6/67.7^5
将给出如下报错信息:
"在第 2 个 / 附近存在逻辑错误"
感兴趣的话,可以e_mail:[email protected]