日期:2014-05-16  浏览次数:20367 次

这个正则哪里写错了?
在验证生日的日时
表达式为var reg=/^(0?[1-9])|([1-2]\d)|(3[0-1])$/;
然后输入1111也符合要求 但是当我改为 
var reg=/^((0?[1-9])|([1-2]\d)|(3[0-1]))$/;就正常了,请问这两者有什么区别吗?
------解决方案--------------------
区别还是很明显的,在用正则的时候一定要注意
------解决方案--------------------
(或)的使用
var reg=/^(0?[1-9])
------解决方案--------------------
([1-2]\d)
------解决方案--------------------
(3[0-1])$/;  意思匹配三种情况

1.匹配开头 带0或者不带0 ,然后匹配非0数字
2.匹配1或2,后跟任意数字
3.匹配3,后跟0或1,然后为结束标记

而var reg=/^((0?[1-9])
------解决方案--------------------
([1-2]\d)
------解决方案--------------------
(3[0-1]))$/; 利用括号将或括起来,那么必须匹配开始标记,然后匹配或中的三个调剂,最后必须匹配结束标记。
------解决方案--------------------
没有大括号的时候 是三个单一的元素 三种情况都可以
包含大括号以后就只能是三者其一
------解决方案--------------------
楼上几位其实说的很明白。
你再好好去理解理解。