举个例子来说吧:用户在一文本框中输入“(订货数量>100)and(库存数量<100)”,比如这是一个正确的表达式,但是考虑到用户输入有可能出现少加或多加或连加括号、比较运算符、逻辑运算符等等多种可能使得该表达式不合法,如果出现不合法的情况需要提示用户更正,就是做这样的验证,本人没做过没经验,想想去也来想不出好的解决办法,希望大家指点,谁有这方面经验或者例子最好了。
解决方案 »
- IOException cannot be resolved to a type
- 忙了半天,还是调试出了这个问题!!Failed to load the sqljdbc_auth.dll
- 如何从http://www.ip138.com/ips.asp网站上批量请求IP地址,获得IP地址的区域所属?
- 请教,如何向属性文件test.properties里面写文件?
- 请高手指教~!如何在JTextArea中获取鼠标的选中的内容?
- 我想做一个在(1--5)随机依次抽出号码的程序,可是遇到问题了。大家解决一下a[i]==a[j] 报错啊
- 请帮我看下
- string的哪个函数可以比较一个string包含另一个string?
- nio的疑问,请大牛指教
- 新手求助个问题
- 一个关于数据类型的简单的问题,帮忙解释下
- 呼救!关于UTF-8和GB23012之间的转换!!!
然后 逐层拆分 将每次拆分的结果保存到List中 看是否能拆分下去
然后对List的各个元素 例如(订货数量>100)进行检查当然 这样会很复杂 考虑通过各种按钮限制用户的输入 可以搜索一下各类开发工具对应的万能查询组件
希望你能找到合适的解决办法
举个相对全面的例子来说“(订货数量>(10+3)*2)&&(库存数量<100)||!(设置人名称!="super")”,此为用户输入的字符串,要求验证它是符合java语法规则的(其中"订货数量"和"库存数量"和"设置人名称"是数据表里取出的域字段,包括它们对应的数据类型,它们可以以中文形式存在,因为以后会有解析的程序将它们转换成常量)那么上面那个例子就是一个符合java语法规则的正确例子,然而在用户输入的过程中出现不合法的情况是很正常的,因为可能出错的情况n多,所以要验证到很精确的程度(对我来说)是很难的。下面说一下我的思路:先将这个字符串按逻辑运算符&&和||进行拆分(java中引用正则表达式),那么如果合法的话拆分的每个部分都应该是一个带比较运算符的条件语句(其中比较运算符有且只有一个并且左右至少有一个字符)如果不符合就跳出循环弹出错误框,如果符合就继续循环把每个部分再按照比较运算符进行拆分,拆分后的部分可以是像"订货数量"这样的变量,也可以是一个算术表达式,当然还要继续验证变量或者算术表达式是否符合语法规则……还想到两个特殊的非法情况:
1、逻辑非也就是!后面应该至少接一个括号,否则会出现不合法的情况。
2、此字符串中出现")("的情况也是不合法的,它中间只可能加"&&、||、+、-、*、/、>、<、<=、>=、==、!="。目前能想到的就这么多,是个大概的思路,希望大家给予建议或者补充。