正则表达式，3-10位必须包含至少1个数字和1个字母，为何我这样写不对？
```
(?=[a-zA-Z]+)(?=[0-9]+)[a-zA-Z0-9]{3,10}
```
上面是我写的，但不正确，不知道原因。我理解的是第一个正向预查找出至少一个字母，和第二个正向预查找出至少一个字母。然后最后是[a-zA-Z0-9]{3,10}，这大家都懂。不知道哪里错了，是不是我对正向预查的理解不正确？
`?=`不同的人叫法不一样，你称之为`预查`，我更倾向于叫`零宽断言`，也就是说`?=`只是匹配一个位置，并不匹配具体的字符，所以是`零宽`，也就是宽度是0。
所以`(?=[a-zA-Z]+)`匹配一个位置，这个位置后面`紧跟`至少一个字母，注意此时位置并没有后移;
`(?=[0-9]+)`也是匹配一个位置，这个位置后面后面`紧跟`至少一个数字；
因为`(?=[a-zA-Z]+)`和`(?=[0-9]+)`都只匹配位置，而不匹配具体的字符，这两个又直接写在了一起，也就是说`(?=[a-zA-Z]+)(?=[0-9]+)`意味着这个位置后面`紧跟`至少一个字母，`同时紧跟`至少一个数字，也就是说这个位置后面的字符既是字母又是数字，显然这样的位置不存在。
Update:
你试试这个`/^(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{3,10}$/`。