<script language="javascript">
function ck(v){
//判断用户输入的内容必须是3个数字或者是5个数字的正则表达式是怎么样的
var d=v.value;
var r1=/^\d{3}|\d{5}$/; //为什么这个不可以
var r2=/^\d{3}$|^\d{5}$/; //正确答案。
alert(r2.test(d))
}
</script>
</head>
<body>
<input type="text" id="d" onblur="ck(this)" />
</body>
</html>
function ck(v){
//判断用户输入的内容必须是3个数字或者是5个数字的正则表达式是怎么样的
var d=v.value;
var r1=/^\d{3}|\d{5}$/; //为什么这个不可以
var r2=/^\d{3}$|^\d{5}$/; //正确答案。
alert(r2.test(d))
}
</script>
</head>
<body>
<input type="text" id="d" onblur="ck(this)" />
</body>
</html>
Try:var reg=/^(?:\d{3}|\d{5})$/;
它不等价于var r1=/^(\d{3}|\d{5})$/;
也就是可以写成var r1=/^(\d{3}|\d{5})$/;
也是就是优先级问题,跟我刚学正则时一样,一开始跟楼主想的一样,但看了正则表达式权威指南才知道
/^\d{3}(\d\d)?$/
/^\d(\d\d){1,2}$/从回溯的角度来说,重叠子串是个忌讳。