我想要一个正则表达式匹配以222开头的10到60位数字,其中的第4到7位不能是102,203,301这样的字符,就是不能是[1-9]0[1-9]这样的,比如2220103175000027就是匹配不过的,2220034000008230和2220134004978315 这样的就可以过,应该怎么写

解决方案 »

  1.   


    //题目你写错了
     String s = "2221034000008230\n2221213175000027";
            Pattern p = Pattern.compile("222(?![1-9]0[1-9])\\d{4,54}");
            Matcher m = p.matcher(s);
            while (m.find()) {
                System.out.println(m.group());
            }
      

  2.   

    <script type="text/javascript">
    function test(obj)
    {
    var num = obj.number.value; alert(num);
    var pattern=/^222(?![1-9]0[1-9])\d{4,54}$/;
    flag=pattern.test(num);
    if(flag){
    alert("Ok")
    return true;}
    else {
    alert("worng");
    return false;}
    }
    </script>自己去测试一下吧!
      

  3.   

    给少了页面部分刚才忘记发了  重新发次:
    <html>
    <head>
    <title></title>
    <script type="text/javascript">
    function test(obj)
    {
    var num = obj.number.value; alert(num);
    var pattern=/^222(?![1-9]0[1-9])\d{4,54}$/;
    flag=pattern.test(num);
    if(flag){
    alert("Ok")
    return true;}
    else {
    alert("worng");
    return false;}
    }
    </script>
    </head><body>
     <form onSubmit="return test(this);">     
     <input name="number" type="text">    
      <input type="submit">     
      </form> </body>
    </html>
      

  4.   

    var pattern=/^222(?![1-9]0[1-9])\d{7,57}$/; 
    用这个来测试吧~~