您的位置:程序门 -> .net技术 -> vb.net



求一个正则表达式


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求一个正则表达式[已结贴,结贴人:yyj135]
发表于:2007-04-06 16:29:02 楼主
现在在做一个会计科目的程序。用户输入会计科目的原则是这样的:
1.只能是数字或数字加分隔符号,且最后一位不能是分隔符号。
2.会计科目的分隔符号可以是.(小数点)或者-(减号),但不同时包含.(小数点)和-(减号)
3.分隔符号可能有多个,即会计科目可能有多级
例如:
以下会计科目是正确的:
1000    
1000.01
1000.01.005
1000-01-05
2121
2121-34

但下面这样写就不对:
1000.01-1
1000-
2121.
123a

请问与正则表达式如何写,谢谢!

发表于:2007-04-06 16:58:211楼 得分:20
//--两次   验证

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
                                //根本通不过...
发表于:2007-04-06 17:21:122楼 得分:20
^\d+$ ¦^\d+(-\d+){1,}$ ¦^\d+(\.\d+){1,}$
发表于:2007-04-06 17:22:423楼 得分:15
以上均测试通过
----------------------------------
regex   reg   =   new   regex(@ "^\d+$ ¦^\d+(-\d+){1,}$ ¦^\d+(\.\d+){1,}$ ");
string   str   =   "1000.01-1 ";
messagebox.show(reg.ismatch(str).tostring());
发表于:2007-04-06 17:26:504楼 得分:15
楼上的正解   .
我那个有错.

^\d+$ ¦^\d+(-\d+)+$ ¦^\d+(\.\d+)+$

发表于:2007-04-06 17:28:435楼 得分:0
to   hertcloud(·£孙子兵法£·)  

其实用一个正则就可以了

^\d+(?:(\. ¦\-)\d+)?(?:\1\d+)*$
发表于:2007-04-06 17:32:286楼 得分:15
leohuang(leo)   ()   信誉:91         blog       加为好友  
^\d+$ ¦^\d+(-\d+){1,}$ ¦^\d+(\.\d+){1,}$


也是一种实现方法
不过这里用向后引用实现起来更通用一些.比如他要求,.-/等多个符号都合法的时候,^\d+(?:(\. ¦\-)\d+)?(?:\1\d+)*$就改起来就很方便了
发表于:2007-04-06 17:33:117楼 得分:0
楼上是正则高手,领教过了
发表于:2007-04-06 17:36:248楼 得分:0
两次   验证
//涨知识了
以后又多了一个思路
发表于:2007-04-06 17:44:549楼 得分:15
^\d+(([- ¦\.]{1})\d+(\2\d+)*)?$

这样可以?
发表于:2007-04-06 17:47:3110楼 得分:0
来学习的


快速检索

最新资讯
热门点击