正则表达式的问题

zhangyp 2003-07-17 07:12:05
我想验证textbox框输入的数字是不是在某数据范围内,例如(11-123),请问如何写正则表达式?(谢谢,在线等)
...全文
83 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xixigongzhu 2003-07-25
  • 打赏
  • 举报
回复
忘了*号了:
"10[0-9]|11[0-9]*|12[0-3]*|1[3-9]|[2-9][0-9]"
xixigongzhu 2003-07-25
  • 打赏
  • 举报
回复
遇到120这样的楼上的就不能匹配了。

看看这个就不一样了:
分组:
"10[0-9]":100-109
"11[0-9]*":11、110-119
"12[0-3]*":12、120-123
"1[3-9]":13-19
"[2-9][0-9]":20-99
然后组合:
"10[0-9]|11[0-9]|12[0-3]|1[3-9]|[2-9][0-9]"
这样每个数字都考虑了,就准确无误了。
xixigongzhu 2003-07-25
  • 打赏
  • 举报
回复
楼上的,用120测试一下,看能得出什么结果。
liuspcn 2003-07-25
  • 打赏
  • 举报
回复
mark
liduke 2003-07-24
  • 打赏
  • 举报
回复
我觉得楼上的老兄说的有理,对于这种数字的大小,好像不行
zheng_can 2003-07-24
  • 打赏
  • 举报
回复
我觉得正则表达式一般是用来处理字符串的
对于这种数字的大小
好像没什么办法吧
Rossetti 2003-07-24
  • 打赏
  • 举报
回复
http://www.soulogic.com/platinum/doc/RegularExpressions/jsgrpregexpsyntax.htm
xixigongzhu 2003-07-24
  • 打赏
  • 举报
回复
因为数据冲突,研究了好久都没搞出正则表达式
楼上的(1[1-9])|([2-9][0-9])|(1(([0,1][0-9])|(2[0-3])))
我测试了如果输入123根本不能匹配123,只能匹配到12就结束了,肯定是错的。

如果是web的话,可以用另一种方式解决:
定义RangeValidator控件:
<asp:RangeValidator
id="rangeValInteger"
Type="Integer"
ControlToValidate="txtComp1"//影响的控件名字
MaximumValue="123"
MinimumValue="11"
runat="server"/>
定义控件:
<asp:TextBox Selected id="txtComp1" runat="server"/>

结果控制(最好用按钮的事件来实现):
rangeValInteger.Validate();
if (rangeValInteger.IsValid) {
//有效
} else {
//无效
}
WantGoWorld 2003-07-24
  • 打赏
  • 举报
回复
正则表达式主要是处理字符串的匹配,查找和替换的,如果用来处理数的范围的话,写起来确实是比较麻烦。
(1[1-9])|([2,9][0,9])|(1[0-1][0-9])|(12[0-3])
mongtze 2003-07-24
  • 打赏
  • 举报
回复
错了。
11-123首先划分为四个区间:
11-19: 1[1-9]
20-99: [2-9][0-9]
100-119: 1[0-1][0-9]
120-123: 12[0-3]

然后合并起来:
^1[1-9]|[2-9][0-9]|1[0-1][0-9]|12[0-3]$
mongtze 2003-07-24
  • 打赏
  • 举报
回复
11-123首先划分为几个区间:
11-99: [1-9][0-9]
100-119: 1[0-1][0-9]
120-123: 12[0-3]

然后合并起来:
^[1-9][0-9]|1[0-1][0-9]|12[0-3]$
lovered 2003-07-24
  • 打赏
  • 举报
回复
[v]做个记号
nichang 2003-07-18
  • 打赏
  • 举报
回复
即然使用一个IF便可判断,何必一定要用正则。
醉马不肖 2003-07-18
  • 打赏
  • 举报
回复
试试看不就行了吗?
AhBian 2003-07-18
  • 打赏
  • 举报
回复
简单的是这样:
(1[1-9])|([2-9][0-9])|(1(([0,1][0-9])|(2[0-3])))

可能效率不是很高,请正则表达式的高手们,优化一下。
zhangyp 2003-07-17
  • 打赏
  • 举报
回复
是指 11 到 123 之间的数值,由于一些原因,我要用正则表达式,谢谢
TheAres 2003-07-17
  • 打赏
  • 举报
回复
好像是11~123,其实我个人感觉这种问题不用正则就用if 判断一下程序更容易读。
AhBian 2003-07-17
  • 打赏
  • 举报
回复
11-123 是指 11 到 123 之间的数值呢,还是指两个数字字符、一个短横线、三个数字字符的字符串模板?

我看不懂啊。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧