posts - 14, comments - 0, trackbacks - 0, articles - 0

正则表达式笔记

Posted on 2006-12-05 22:24 忆了又忆 阅读(216) 评论(0)  编辑  收藏 所属分类: Java

1.[] 与 ()的区别

[a-zA-Z0-9] 在包含的字符中 , 匹配其中一个 , 可匹配 ”!a!”

(abc) 在包含的字符中 , 都要逐一匹配 , 而且有顺序 , 其实就是说 ,() 里面就是一个字正则式 , 可匹配 ”3abc93”

2. 表达式之间千万不能有空格

3.构造检查 email的正则表达式

    /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/

在一个完整的 email 地址中有三个部分 :
 1. 用户名 ( 在 '@' 左边的一切 ),
 2.'@',
 3. 服务器名 ( 就是剩下那部分 ).
用户名可以含有大小写字母阿拉伯数字 , 句号 ('.'), 减号 ('-'), and 下划线 ('_'). 服务器名字也是符合这个规则 , 当然下划线除外 .

现在 , 用户名的开始和结束都不能是句点 . 服务器也是这样 . 还有你不能有两个连续的句点他们之间至少存在一个字符,好现在我们来看一下怎么为用户名写一个匹配模式 :
     /^[\w-]+$/

现在还不能允许句号的存在 . 我们把它加上 :
  /^[\w-]+(\.[\w-]+) * $/
上面的意思就是说 : " 以至少一个规范字符(除了 . )开头 , 后面跟着 0 个或者多个 以点开始的字符串 ."

然后是后面一部分 , 在网上流传的一种做法是 , 后面的一部分是跟前面那部分一样的 , 但是我觉得有点不妥 , 难道 abc@abc 这样也符合一个 email 地址格式吗 ? 我试过不少的系统 , 都不允许这样输入的 , 必需要你输入如 abc@abc.abc 这样的格式才行.所以后面部分是略有不同的.

   \^[\w-]+(\.[w-]+) + $\
上面的意思就是说 : " 以至少一个规范字符(除了 . )开头 , 后面跟着 1个或者多个 以点开始的字符串 ."

好 . 现在只需要用 ”@” 把两部分连接 :
 /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[w-]+)+$/

这就是完整的 email 认证匹配模式了 , 在 JS 中只需要调用
    reg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[w-]+)+$/;
    reg.exec(input);

返回为 true, 就是说 input 是一个 email 地址 . 
通过这种方法就可以得到是否为 email 了 !