我今天在写一个正则的时候写了下面这个开始的时候我是这么写的:
/^([a-zA-Z]+?[0-9]){5,10}$/
也就是我要求一个由数字和字母组成的串,必须是字母开头至少有一个字母,然后这个串最少要5个字符最多10个,我写完后却发现这么验证返回的都是false然后我在数字前面加了个“|”就解决了,可是我却不知道为什么加了后可以解决,因为加了后翻译过来不是说如果全是数字也可以通过的吗? 实在头疼  高手帮我翻译下和解决下我疑惑非常感谢
/^([a-zA-Z]+?|[0-9]){5,10}$/

解决方案 »

  1.   

    你都写错的啊!
    /^([a-zA-Z]+?[0-9]){5,10}$/
    的意思是:匹配a1a2a2d2d3d3f3  5-10组字母加数字/^([a-zA-Z]+?|[0-9]){5,10}$/ 
    的意思是:
    匹配5-10个字母数字,如:111111,aaaaaaa都是true
      

  2.   

    /^[a-zA-Z][a-zA-Z0-9]{4,9}$/;  这个是可以的非常感谢您了 不过您能不能帮我解释下你这个组是怎么分的?{4,9}不是说只需要4-9个字符码?还有这样写的话那不是表示 a-zA-Z可有可无吗? 现在我突然头一下乱掉了 麻烦您帮我说下您这样的写法是怎么分析的非常感谢
      

  3.   

    按照我的理解应该要这样写的啊/^[a-zA-Z]+?[a-zA-Z0-9]{4,9}$/是不是[]中就是一个匹配组  只要它符合[]中任意一组都可以???然后您后面的{4,9}不是应该是指[a-zA-Z0-9] 它中4-9个吗?
      

  4.   

    [a-zA-Z] 表示一个集合 匹配出现集合内的字符一次![a-zA-Z] 匹配任意字母一次
    +  表示匹配前面的规则的一次或多次  [a-zA-Z]+  表示出现一次或多次字母
    ?在+后面表示非贪婪,即原本+会尽可能匹配多次,现在值匹配一次就不再向后匹配了。
    如:a+?  等价如a  都是匹配a一次