社区
C#
帖子详情
如何校验表达式的有效性?
liujiantao
2003-08-19 08:46:11
最近在做表达式的定义和计算,计算有很多方法:
1.codedom,2.vsa,3.sql,4.列计算,5.自己解析,不知道全不全,
但是在表达式定义的时候需要校验用户定义的表达式是否有效,
不知道该用什么方法,请高手指教?
...全文
70
10
打赏
收藏
如何校验表达式的有效性?
最近在做表达式的定义和计算,计算有很多方法: 1.codedom,2.vsa,3.sql,4.列计算,5.自己解析,不知道全不全, 但是在表达式定义的时候需要校验用户定义的表达式是否有效, 不知道该用什么方法,请高手指教?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liujiantao
2003-08-21
打赏
举报
回复
谢谢各位的指教,有没有比较通用的办法,进一步明确我的需求:
首先定义表达式公式,保存到数据库里,等用的时候取出公式,对里面的变量赋值然后计算。在用户定义完公式保存到数据库之前需要对公式进行校验,看看是否合法!
Jinniu
2003-08-20
打赏
举报
回复
UP!
xixigongzhu
2003-08-20
打赏
举报
回复
我实习的时候,头要我做的第一件事就是处理表达式。非常头痛,很多细节问题很容易忽视。
xixigongzhu
2003-08-20
打赏
举报
回复
如果你是自己实现的话,用扫描,就是在处理的同时判断输入对不对。
必须先词法分析,就是判断输入是否正确,同时将分析的数据保存。
然后处理保存的数据,得出表达式的值。
一般的都是这样做的。
从速度考虑,用正则表达式是肯定不行的。
robin_xin_xin
2003-08-20
打赏
举报
回复
up
saucer
2003-08-19
打赏
举报
回复
the classic method is to use yacc/lex, see
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=1a00ca30-fb47-41fc-83be-77e0f2185b37
win911
2003-08-19
打赏
举报
回复
对,正则表达式
elite2018
2003-08-19
打赏
举报
回复
可以 使用 正则表达式 亚 , 非常 通用 !
维她奶
2003-08-19
打赏
举报
回复
gz
雪狼1234567
2003-08-19
打赏
举报
回复
如果表达式复杂的话就只好自己解析啦,这是可用用栈来验证
带有正则
表
达式
校验
的TextBox
继承自TextBox,仅仅添加了使用正则
表
达式
检验数据
有效性
的功能。含源代码及Dll。欢迎批评。
正则
表
达式
校验
工具,工具刨析
表
达式
结构完美入门
该资源为正则
表
达式
的
校验
工具,帮助编辑正则
表
达式
的正确性,得以及时修改编辑,工具界面有显示正则
表
达式
的结构组成,有效的帮助入门者理解正则
表
达式
!
MAC地址合法性检测(正则
表
达式
,C/C++, JAVA实现)
MAC地址合法性检测(C,C++, JAVA实现)
C# 正则应用之——最全的日期正则
表
达式
没有之一
1 概述 首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和
校验
还是用日历控件来实现比较好。 前几天在CSDN多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正。 日期正则一般是对格式有要求,且数据不是直接由用户输入时使用。因应用场景的不同,写出的正则也不同,复杂程度也自然不同。正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂的。 对于日期提取,只要能与非日期区分开,写最简单的正则即可,如 \d{4}-\d{2}-\d{2} 如果可以在源字符串中唯一定位yyyy-MM-dd格式的日期,则可用做提取。 对于验证,如果仅仅是验证字符组成及格式是没有多大意义的,还要加入对规则的
校验
。由于闰年的存在,使得日期的
校验
正则变得比较复杂。 先来考察一下日期的有效范围以及什么是闰年。 2 日期的规则 2.1 日期的有效范围 对于日期的有效范围,不同的应用场景会有所不同。 MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31
15/18位身份证号码验证的正则
表
达式
总结(详细版)
前言 开发过程中,常常需要对一些输入信息进行
有效性
验证,使用正则
表
达式
进行
校验
是最简单、效率最高的方式了,下面就来看看15/18位身份证号码验证的正则
表
达式
吧。 介绍 xxxxxx yyyy MM dd 375 0 十八位 xxxxxx yy MM dd 75 0 十五位 地区: [1-9]\d{5} 年的前两位: (18|19|([23]\d)) 1800-2399 年的后两位: \d{2} 月份: ((0[1-9])|(10|11|12)) 天数: (([0-2][1-9])|10|20|30|31) 闰年不能禁止
C#
110,566
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章