黑马程序员技术交流社区
标题:
正则表达式问题
[打印本页]
作者:
左耳的鱼
时间:
2013-7-17 06:26
标题:
正则表达式问题
本帖最后由 左耳的鱼 于 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;
}
作者:
chilong_333
时间:
2013-7-18 11:23
^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:
"^The": 开头一定要有"The"字符串;
"of despair$": 结尾一定要有"of despair" 的字符串;
那么, "^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。
"notice": 匹配包含notice的字符串。
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。
这么说能理解吗?
作者:
左耳的鱼
时间:
2013-7-18 13:29
chilong_333 发表于 2013-7-18 11:23
^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:
"^The": 开头一定要有"The"字符串;
...
如果我前面后面不写那个符号 我密码没法对超过16位有限制,这地方我就不懂了
作者:
chilong_333
时间:
2013-7-18 14:27
因为你这里只有一个判断,或许不影响什么。但是多了的话一定会混乱的。所以一般都要用开始和结束符来分割开,这样系统也能更方便的识别,是一种规范。没人规定你不写就错,只要执行成功就行。但是最好都加一下。所以养成一个良好的编程习惯对你日后的开发和团队合作都是有很大的帮助的。
作者:
chilong_333
时间:
2013-7-18 14:29
而且你不写的话,不会制定{}一定会再你的正则后。也就是说[a-zA-Z_0-9]{6,16} =同于{6,16}[a-zA-Z_0-9]
自然就判断不出来了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2