求正值表达式写法

baijinwu 2005-12-23 08:07:02
我要验证一个1~200的值 什么搞呀 ([1-9]{1}[0-9]{0,3}|10000)这个怎么不行呀?

为什么/[a-b]{1}/输入aa也可以通过?

还有一个要验证7000~1500000的一个,
...全文
222 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
baijinwu 2006-03-12
  • 打赏
  • 举报
回复
3. 7000~1500000

7000~9999:(?=\d{4}(?!\d))[7,8,9]\d+
10000~999999:(?=\d{5,6}(?!\d))\d+
1000000~1499999:(?=\d{7}(?!\d))1[0-4]\d+
1500000:1500000

看到 7000~9999:(?=\d{4}(?!\d))[7,8,9]\d+
这里的(?!\d)是干什么用的呀,
不能为数字吗?
好像加不加没有什么区别了
低调的小青蛙 2005-12-25
  • 打赏
  • 举报
回复
1. 0-200

0~99: (?!\d{3})\d+
100~199: 1\d\d
200: 200

于是,0-200 表达式: \b((?!\d{3})\d+|1\d\d|200)\b

测试工具:(推荐)
http://www.regexlab.com/zh/workshop.asp?pat=%5Cb%28%28%3F%21%5Cd%7B3%7D%29%5Cd%2B%7C1%5Cd%5Cd%7C200%29%5Cb&txt=0%2C1%2C...199%2C200%2C201%2C202%2C...%2C1999%2C2000

2. /[a-b]{1}/ 输入 aa

实际上只匹配了一个"a",但匹配结果也算匹配成功。如果只能为一个 "a" 或者 "b",那么需要在表达式的两边加上 "^...$" 或者 "\b...\b"

3. 7000~1500000

7000~9999:(?=\d{4}(?!\d))[7,8,9]\d+
10000~999999:(?=\d{5,6}(?!\d))\d+
1000000~1499999:(?=\d{7}(?!\d))1[0-4]\d+
1500000:1500000

于是:\b((?=\d{4}(?!\d))[7,8,9]\d+|(?=\d{5,6}(?!\d))\d+|(?=\d{7}(?!\d))1[0-4]\d+|1500000)\b

测试工具:(推荐)
http://www.regexlab.com/zh/workshop.asp?pat=%5Cb%28%28%3F%3D%5Cd%7B4%7D%28%3F%21%5Cd%29%29%5B7%2C8%2C9%5D%5Cd%2B%7C%28%3F%3D%5Cd%7B5%2C6%7D%28%3F%21%5Cd%29%29%5Cd%2B%7C%28%3F%3D%5Cd%7B7%7D%28%3F%21%5Cd%29%291%5B0-4%5D%5Cd%2B%7C1500000%29%5Cb&txt=6999%2C7000%2C10000%2C1400000%2C1500000%2C1500001

4. 更多正则表达式帮助,欢迎参考正则表达式入门文档:(推荐)
http://www.regexlab.com/zh/regref.htm

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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