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

bsd 2002-01-09 05:12:23
将用户的输入限制为大于0小于1000的整数,包含小数点的又该如何写呢?
多谢!
...全文
267 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
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的情况,不知你试过没有?
blues-star 2002-01-11
  • 打赏
  • 举报
回复
我还是认为这样写已经可以了:),满足小于1000,但是不满足大于0,可以等于0的
blues-star 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。

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

少写了一个\好象
blues-star 2002-01-10
  • 打赏
  • 举报
回复
哪天把正则表达式的写法整理一下贴出来:),忙呀~
加载更多回复(5)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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