正则表达式求解
<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>
------解决方案--------------------
var r1=/^\d{3}|\d{5}$/; 这样写等价于var r1=(?:/^\d{3})|(?:\d{5}$)/; 也就是说这个正则只是判断输入内容前3位或后5位为数字,想要达到你的效果,var reg = /^(?:\d{3}|\d{5})$/;即可
------解决方案--------------------var r1=/^\d{3}|\d{5}$/; 这样写等价于var r1 = /(?:^\d{3})|(?:\d{5}$)/; 也就是说这个正则只是判断输入内容前3位或后5位为数字,想要达到你的效果,var reg = /^(?:\d{3}|\d{5})$/;即可
------解决方案--------------------var r1=/^\d{3}|\d{5}$/; //为什么这个不可以
因为 你这句的意思是 以 3位数字开头 或者以 5位数字结尾 中间可以再插别的,所以不明确
如果要改的话就是 var r1=/^\d{3}$|^\d{5}$/;