问一个正则表达式的问题。

猴子酋长 2008-06-20 02:02:16
遇到了一个很其怪的javascript问题
check 12 个月份输入
我写了两个
1[0-2]|0[1-9]|[1-9] <--正确
[1-9]|[0][1-9]|[1][0-2] <--错误 10以及10以上的月份出错
我想知道为什么
...全文
82 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
猴子酋长 2008-06-20
  • 打赏
  • 举报
回复
这里不是[1-9]匹配不正确,而是匹配正确,如10月份,这里就匹配到了1.<--
没有啊我这里就是出现了匹配错误 输入〉=10的话就是false其他都正常
家鸣 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sp_chenjie 的回复:]
首先第一个表达式[1-9]就会消耗掉月份的第一个数字也就是会匹配到月份的第一个数字,
而不会尝试跳到[1][0-2]这里去匹配。 <--- ¦号不是或者的关系吗 为什么[1-9]匹配不正确就不会跳到[1][0-2]
[/Quote]
这里不是[1-9]匹配不正确,而是匹配正确,如10月份,这里就匹配到了1.
大自然D使者 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 sp_chenjie 的帖子:]
遇到了一个很其怪的javascript问题
check 12 个月份输入
我写了两个
1[0-2] ¦0[1-9] ¦[1-9] <--正确
[1-9] ¦[0][1-9] ¦[1][0-2] <--错误 10以及10以上的月份出错
我想知道为什么
[/Quote]
这种问题好像出在正则表达式的书写顺序上,楼主可以上网看一下正则表达式书写顺序规则。
猴子酋长 2008-06-20
  • 打赏
  • 举报
回复
首先第一个表达式[1-9]就会消耗掉月份的第一个数字也就是会匹配到月份的第一个数字,
而不会尝试跳到[1][0-2]这里去匹配。<--- |号不是或者的关系吗 为什么[1-9]匹配不正确就不会跳到[1][0-2]
symbol441 2008-06-20
  • 打赏
  • 举报
回复


^(1[0-2])|0?[1-9]$
家鸣 2008-06-20
  • 打赏
  • 举报
回复
[1-9] ¦[0][1-9] ¦[1][0-2] 这个匹配10以及10以上的月份时,首先第一个表达式[1-9]就会消耗掉月份的第一个数字也就是会匹配到月份的第一个数字,
而不会尝试跳到[1][0-2]这里去匹配。
syc958 2008-06-20
  • 打赏
  • 举报
回复
[]里的内容是或者的意思!如果把最后的那个改成1[0-2]就没事了!
syc958 2008-06-20
  • 打赏
  • 举报
回复
[1][0-2] 最后一个是不可能两个或者都符合的!正则只能或者一个!即:要么是1,要反是0到2的一个数!
HimeTale 2008-06-20
  • 打赏
  • 举报
回复
第2种优先匹配一位数字
你加上开头结尾就对了
^([1-9]|[0][1-9]|[1][0-2])$
猴子酋长 2008-06-20
  • 打赏
  • 举报
回复
我只是想知道 为什么1[0-2] ¦0[1-9] ¦[1-9] 和[1-9] ¦[0][1-9] ¦[1][0-2] 有区别
Griot 2008-06-20
  • 打赏
  • 举报
回复
给你找了一个,试试怎么样啊?
验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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