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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左耳的鱼 中级黑马   /  2013-7-17 06:26  /  1506 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 左耳的鱼 于 2013-7-21 17:56 编辑

//验证密码
        var password=document.testform.password.value;
        var pwd = new RegExp("^[a-zA-Z_0-9]{6,16}$", "");//为什么此处要加^和$,不写不也代表第一位了吗
        if(!pwd.test(password))
        {
                alert("密码必须是6-16位字母数字下划线");
                return false;
        }

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

4 个回复

倒序浏览
^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:  
"^The": 开头一定要有"The"字符串;
"of despair$": 结尾一定要有"of despair" 的字符串;
那么,      "^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。   
"notice": 匹配包含notice的字符串。
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。

这么说能理解吗?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
chilong_333 发表于 2013-7-18 11:23
^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:  
"^The": 开头一定要有"The"字符串;
  ...

如果我前面后面不写那个符号 我密码没法对超过16位有限制,这地方我就不懂了
回复 使用道具 举报
因为你这里只有一个判断,或许不影响什么。但是多了的话一定会混乱的。所以一般都要用开始和结束符来分割开,这样系统也能更方便的识别,是一种规范。没人规定你不写就错,只要执行成功就行。但是最好都加一下。所以养成一个良好的编程习惯对你日后的开发和团队合作都是有很大的帮助的。
回复 使用道具 举报
而且你不写的话,不会制定{}一定会再你的正则后。也就是说[a-zA-Z_0-9]{6,16} =同于{6,16}[a-zA-Z_0-9]
自然就判断不出来了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马