请问这个正则表达式怎么写?

bsd 2002-01-09 05:12:23
将用户的输入限制为大于0小于1000的整数,包含小数点的又该如何写呢?
多谢!
...全文
230 25 点赞 打赏 收藏 举报
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
silentlamb 2002-01-15
to bsd(小红帽菜鸟):
我一直觉得很奇怪,写成
/^([0-9]{1,3}\.[0-9]{1,8})¦([0-9]{1,3})$/
我测试的时候一直无法检查出大于1000的情况
这样写就行了:
/^(([0-9]{1,3}\.[0-9]{1,8})¦([0-9]{1,3}))$/
简单的说就是|的优先级比^$要低
  • 打赏
  • 举报
回复
bsd 2002-01-14
看来讨论到此为止了,散分!
呵呵,谢谢各位!
  • 打赏
  • 举报
回复
bsd 2002-01-11
很奇怪,对于整数的限制似乎要这么写
/(^[1-9][0-9]{0,2}$)|(^1000$)/
如果写成
/^[1-9][0-9]{0,2}|1000$/
则没有什么效果,尤其输入大于1000的数值时依然是true

  • 打赏
  • 举报
回复
bsd 2002-01-11
to runmin(稻草人),
我一直觉得很奇怪,写成
/^([0-9]{1,3}\.[0-9]{1,8})|([0-9]{1,3})$/
我测试的时候一直无法检查出大于1000的情况,不知你试过没有?
  • 打赏
  • 举报
回复
runmin 2002-01-11
我还是认为这样写已经可以了:),满足小于1000,但是不满足大于0,可以等于0的
  • 打赏
  • 举报
回复
runmin 2002-01-11
其实正则表达式不单有一个答案的

/^([0-9]{1,3}\.[0-9]{1,8})|([0-9]{1,3})$/

前半部分是小数,后半部分是整数~用"|"隔开,代表或,这样就可以不分开判断整数和小数的情况了
  • 打赏
  • 举报
回复
bsd 2002-01-11
对于小数则写成
/^(([1-9][0-9]{0,2})|(1000)|0)\.[0-9]{0,4}$/
只是觉得好像写的比较繁,呵呵
谢谢各位指点
欢迎大家继续讨论,分不够另加
  • 打赏
  • 举报
回复
bsd 2002-01-11
to vxhelp(我是第一万个BUG)  & silentlamb(silent),
你们试过用/([1-9][0-9]{0,2})|(1000)/或者是/([1-9][0-9]{0,2})|1000/吗?
这两种写法如果我输入的数字为大于1000的其他值也是true啊
  • 打赏
  • 举报
回复
vxhelp 2002-01-11
silentlamb(silent) (2002-1-10 11:45:04) 得0分
整数:
/([1-9][0-9]{0,2})¦1000

不要吵了silentlamb(silent)的是对的,
不要吵了silentlamb(silent)的是对的,
不要吵了silentlamb(silent)的是对的,
  • 打赏
  • 举报
回复
ohno 2002-01-11
不过回过头一想
发现个问题
就是如果要判断的数字是099就还是会返回true啊
  • 打赏
  • 举报
回复
ohno 2002-01-11
var p = /^([0-9]+)\.([0-9]{1,8})$/;
alert(p.test(什么东西));
{1,8}小数点后面的位数

不过这样作这个数必须是小数
如果写成var p = /^([0-9]+)$/可以判断他是不是整数
  • 打赏
  • 举报
回复
silentlamb 2002-01-10
整数:
/([1-9][0-9]{0,2})|1000/
实数:
/([1-9][0-9]{0,2})\.\d*/(我觉得小数部分应该允许0的)
不过纯数字的话不如用isNaN()判断更方便一点
  • 打赏
  • 举报
回复
llcnllcn 2002-01-10
给你一个小程序测试一下:
<html>
<body>
<script language=javascript>
function a()
{
var a1=/[0-9]|[1-9][0-9]|[1-9][0-9][0-9]/;
var a2=/[0-9]*[.][0-9]*[1-9]/;
var b1=document.all.text1.value;
var b2=document.all.text2.value;
var match1=a1.exec(b1);
var match2=a2.exec(b2);
if(match1)
{
alert("No.1 success!");
}
if(match2)
{
alert("No.2 success!");
}
}
</script>
<input type=text name=text1>
<input type=text name=text2>
<input type=button value="click!" onclick=a()>
</body>
</html>
  • 打赏
  • 举报
回复
llcnllcn 2002-01-10
var a1=/[0-9]|[1-9][0-9]|[1-9][0-9][0-9]/;
var a2=/[0-9]*[.][0-9]*[1-9]/;

哈哈,可能还有地方没有考虑到,试试看吧
  • 打赏
  • 举报
回复
ohno 2002-01-10
其实
你判断他是不是数字
用isnan然后在判断这个数与他取整之后的值是否相等
不等就是小数拉
  • 打赏
  • 举报
回复
bsd 2002-01-10
不能用正则表达式吗?
  • 打赏
  • 举报
回复
runming 2002-01-10
<script>
function ex()
{
var p = /^[0-9]{1,4}\.[0-9]{1,8}$/;
alert(p.test(v.value));
}
</script>
<input type=text name=v onchange=ex()>

不好意思,想了半天
  • 打赏
  • 举报
回复
mosane 2002-01-10


if(num>0 && num<1000 && num%1==0) {
......
} else {
......
}

小数的就改为不等于0。

  • 打赏
  • 举报
回复
runmin 2002-01-10
哦,错了:(
/^([0-9]¦\.){1,4}$/

少写了一个\好象
  • 打赏
  • 举报
回复
runmin 2002-01-10
哪天把正则表达式的写法整理一下贴出来:),忙呀~
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
JavaScript
加入

8.5w+

社区成员

Web 开发 JavaScript
申请成为版主
帖子事件
创建了帖子
2002-01-09 05:12
社区公告
暂无公告