一个正则的理解??

籽沫 2010-06-21 04:01:28
我今天在写一个正则的时候写了下面这个开始的时候我是这么写的:
/^([a-zA-Z]+?[0-9]){5,10}$/
也就是我要求一个由数字和字母组成的串,必须是字母开头至少有一个字母,然后这个串最少要5个字符最多10个,我写完后却发现这么验证返回的都是false

然后我在数字前面加了个“|”就解决了,可是我却不知道为什么加了后可以解决,因为加了后翻译过来不是说如果全是数字也可以通过的吗? 实在头疼 高手帮我翻译下和解决下我疑惑非常感谢
/^([a-zA-Z]+?|[0-9]){5,10}$/
...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
籽沫 2010-06-21
  • 打赏
  • 举报
回复
非常感谢各位刚刚我大概的又看了下总算知道自己问题在那了,很感谢
浪尖赏花 2010-06-21
  • 打赏
  • 举报
回复
[]号中只匹配一个字符,后面可以跟数量词,比如*号表示0-多个
+号表示1-多个
{4,9}表示4到9个
Headsen 2010-06-21
  • 打赏
  • 举报
回复
[a-zA-Z] 表示一个集合 匹配出现集合内的字符一次![a-zA-Z] 匹配任意字母一次
+ 表示匹配前面的规则的一次或多次 [a-zA-Z]+ 表示出现一次或多次字母
?在+后面表示非贪婪,即原本+会尽可能匹配多次,现在值匹配一次就不再向后匹配了。
如:a+? 等价如a 都是匹配a一次
籽沫 2010-06-21
  • 打赏
  • 举报
回复
按照我的理解应该要这样写的啊

/^[a-zA-Z]+?[a-zA-Z0-9]{4,9}$/

是不是[]中就是一个匹配组 只要它符合[]中任意一组都可以???

然后您后面的{4,9}不是应该是指[a-zA-Z0-9] 它中4-9个吗?
籽沫 2010-06-21
  • 打赏
  • 举报
回复
/^[a-zA-Z][a-zA-Z0-9]{4,9}$/;

这个是可以的

非常感谢您了

不过您能不能帮我解释下你这个组是怎么分的?{4,9}不是说只需要4-9个字符码?

还有这样写的话那不是表示 a-zA-Z可有可无吗? 现在我突然头一下乱掉了 麻烦您帮我说下您这样的写法是怎么分析的非常感谢
籽沫 2010-06-21
  • 打赏
  • 举报
回复
嗯谢谢我刚刚仔细的测试了下确实这样的正则都是有问题的

不知道如果我这样的条件改怎么去写麻烦您帮我下个我看看

也就是说我现在要求:

个由数字和字母组成的串,必须是字母开头至少有一个字母,然后这个串最少要5个字符最多10个,同时或者是邮箱格式
Headsen 2010-06-21
  • 打赏
  • 举报
回复
/^[a-zA-Z][a-zA-Z0-9]{4,9}$/;
Headsen 2010-06-21
  • 打赏
  • 举报
回复
你都写错的啊!
/^([a-zA-Z]+?[0-9]){5,10}$/
的意思是:匹配a1a2a2d2d3d3f3 5-10组字母加数字

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

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧