[VB.NET]求一个正则表达式

一个正则表达式 现在在做一个会计科目的程序。用户输入会计科目的原则是这样的: 1.只能是数字或数字加分隔符号,且最后一位不能是分隔符号。 2.会计科目的分隔符号可以是.(小数点)或者-(减号),但不同时包含.(小数点)和-(减号) 3.分隔符号可能有多个,即会计科目可能有多级 例如: 以下会计科目是正确的: 1000 1000.01 1000.01.005 1000-01-05 2121 2121-34 但下面这样写就不对: 1000.01-1 1000- 2121. 123A 请问与正则表达式如何写,谢谢! __________________________________________________________________________ //--两次 验证 Regex regi = new Regex(@ (^/d[/d-]*/d$)|(^/d[/d/.]*/d$) ); string inreg = 1.000.01.005 ; if (regi.IsMatch(inreg)) { regi = new Regex(@ [^/d/./d]|[^/d-/d] ); if (!regi.IsMatch(inreg)) { //全部成功做的你事 } else { //遗憾2层验证失败... } } else //根本通不过... __________________________________________________________________________ ^/d+$|^/d+(-/d+){1,}$|^/d+(/./d+){1,}$ __________________________________________________________________________ 以上均测试通过 ---------------------------------- Regex reg = new Regex(@ ^/d+$|^/d+(-/d+){1,}$ ); string str = 1000.01-1 ; MessageBox.Show(reg.IsMatch(str).ToString()); __________________________________________________________________________ 楼上的正解 . 我那个有错. ^/d+$|^/d+(-/d+)+$|^/d+(/./d+)+$ __________________________________________________________________________ To hertcloud(·£孙子兵法£·) 其实用一个正则就可以了 ^/d+(?:(/.|/-)/d+)?(?:/1/d+)*$ __________________________________________________________________________ leohuang(LEO) () 信誉:91 Blog 加为好友 ^/d+$|^/d+(-/d+){1,}$ 也是一种实现方法 不过这里用向后引用实现起来更通用一些.比如他要求,.-/等多个符号都合法的时候,^/d+(?:(/.|/-)/d+)?(?:/1/d+)*$就改起来就很方便了 __________________________________________________________________________ 楼上是正则高手,领教过了 __________________________________________________________________________ 两次 验证 //涨知识了 以后又多了一个思路 __________________________________________________________________________ ^/d+(([-|/.]{1})/d+(/2/d+)*)?$ 这样可以? __________________________________________________________________________ 来学习的 __________________________________________________________________________

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...