请问,以下javascript实现的正则表达式是否只有090xxx 091xxx 092xxx 30xxx 31xxx 32xxx 80xxx 81xxx 82xxx打头的英文数字(非全角、半角)能通过?
<script language=javascript>
str="52282";
if(!/^(09[0-2][0-9]{3}|[3,8][0-2][0-9]{3})$/.test(str)){
alert("Error")
}
</script>还有可以改进的代码吗?

解决方案 »

  1.   

    楼主的正则是错的,“,0123”也可以通过var reg = /^(09|[38])[0-2][0-9]{3}$/;英文数字?是指英文字母和数字,还是仅仅指半角的数字?
      

  2.   


    <script type="text/javascript">
    var str = "090000";
    var reg = /^(09|3|8)[0-2]\d{3}/; alert( reg.test(str) );
    </script>
      

  3.   

    谢谢,搞定了~~~~
    if (/^(09|[38])[0-2][0-9]{3}$/.test(document.getElementById("form").userid.value)==false){
    alert('请填写正确的考号!');
    document.getElementById("form").userid.focus();
    return false;
    }