A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王小刚 于 2012-8-18 23:55 编辑

今天的学javascript表单效验验的时候,想起了平时注册账号时的要求。
但是我不知道这个正则该怎么写。
要求是这样的。
必须是由英文和数字组成,且长度为8以上。
我是这样写的var pswreg = new RegExp(^([a-zA-Z]+\\d+)$);
但是这样就不符合8位以上了。
我就这样写var pswreg = new RegExp(^([a-zA-Z]+\\d+){8}$);
这样的话也有问题。就是英文和数学间隔的。
还是不符合要求。
  那个帮忙帮我写个正确的给我。并求讲解。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
可以去看毕老师的JAVA基础视频啊,好像最后一节就是讲正则。{:soso__5047281095667575129_2:}
回复 使用道具 举报
我看了,但是没有讲到这个。
回复 使用道具 举报
怎么没人来解决呀
回复 使用道具 举报
改进一下就好了。
"^[a-zA-Z][a-zA-Z0-9]{7,}$"
字母打头,后面接7位以上的数字或字母。
回复 使用道具 举报
还是没人能解决,楼上的这个方法,我也想到过,但是要求不是这样的。
  因为并没有要求数学一定是多少个。
    只要是英文开头,但又必须是数学和英语都有,且长度要大于8。
       唉  
   应该是可以实现的,有好几个网站注册就是这样要求的。不知道是怎么实现。
     高手在哪?
回复 使用道具 举报
王小刚 发表于 2012-8-18 23:52
还是没人能解决,楼上的这个方法,我也想到过,但是要求不是这样的。
  因为并没有要求数学一定是多少个。
...

解决问题的过程就是一个不断学习的过程,你看看这个有没有用,有点复杂
String regex = "^(?=.*\\d)(?=.*[a-zA-Z])[\\da-zA-Z]{8,}$";
首先(?=X) 的意思是通过零宽度的正则X
分步来讲:
(?=.*\\d)开始确定有数字\\d,因为宽度为0,所以下次还会从字符串开始进行匹配
(?=.*[a-zA-Z]) 接着确定有字母[a-zA-Z],还是宽度为0,下次从开始进行匹配
[\\da-zA-Z]{8,}$从头开始判断只能是字符组成
新手理解。。欢迎指正
回复 使用道具 举报
本帖最后由 王小刚 于 2012-8-19 09:49 编辑
胡文凡 发表于 2012-8-19 07:44
解决问题的过程就是一个不断学习的过程,你看看这个有没有用,有点复杂
String regex = "^(?=.*\\d)(?=.* ...


有点道理,我要试试。实验下。但是最后一个正则不是变成字母出现8次以上了。。。
回复 使用道具 举报
问题已经解决!
哈哈,我终于找到解决问题的方法了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马