http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
先上一个小例子:简单的邮箱匹配
var str = "123lk8ks@sina.com";
var patt1 = /^[0-9]+\w+@[0-9a-zA-Z]+.com$/;
document.write(str.match(patt1));
运行结果:123lk8ks@sina.com
分析:
小例子是将str的值和正则做匹配,match()方法是匹配成功返回字符串,匹配失败返回null。
来拆分正则:^[0-9]+\w+@[0-9a-zA-Z]+.com$
^:开头位置
$:结尾位置,前面跟了‘.com’,就表示以‘.com’结尾
[0-9]+:一个或多个0-9的数字,+表示前面的内容有一个或多个(不能是0个)
\w+:\w匹配字母、数字、下划线或汉字,后面带+表示一个或多个
[0-9a-zA-Z]+:一个或多个数字或字母
==================================================================================================================
笔记正式开始:
(1)元字符
\b:表示单词的开头或结尾,也就是单词的分界处。
例:要精确查找单词“hi”:\bhi\bs
\d:表示一位数字
\s:任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
\w:匹配字母、数字、下划线或汉字
.:可以匹配除了换行符以外的任意字符
^:开头位置
$:结尾位置,前面跟了‘.com’,就表示以‘.com’结尾
(2)重复
*:表示*前面的内容可以连续重复使用任意次(可以是0次)
例:hi后面不远处跟着一个Lucy:\bhi\b.*\bLucy\b
?:表示?前面的内容可以出现0或1次
+:表示+前面的内容可以出现1或多次(不能是0)
{n}:表示前面的内容要出现n次
{n,m}:表示前面的内容可以出现n-m次
例:\d{3-8}: 3到8个数字,如‘12345’可以匹配,‘12’、‘123456789’都不行。
(3)转义、字符类
\:转译字符,一些特殊字符比如‘.’、‘*’、‘-’、‘\’等,可能会被解释成别的意思,这时得用\来消除特殊意义。
[.?!]:匹配标点符号‘.’‘?’‘!’
[0-9a-zA-Z]:匹配任意一个数字或字母,后面可跟重复表达式
例:[0-9a-zA-Z]+:表示任意1个或多个数字或字母
(4)分支条件
|:或,有几种规则,满足任意一种都当成匹配。
从左到右,有先满足的就停止匹配。
例:0\d{2}-\d{8}|0\d{3}-\d{7}:表示能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。
(5)分组(可实现多个字符的重复)
():子表达式,也叫分组。(英文格式的小括号)
后面常跟重复,来简化表达式。
例:一个简单的IP表达式:(\d{1,3}\.){3}\d{1,3}
正确的IP表达式:((2[0-4]\d|25[0-5]|[0,1]?\d\d?)\.){3}((2[0-4]\d|25[0-5]|[0,1]?\d\d?)\.)
(6)反义(几个元字符的大写,就是它的相反意思)
\W:匹配任意不是字母、数字、下划线、汉字的字符
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配不是单词开头或结束的位置
[^x]:匹配除了x以外的任意字符
[^abcde]:匹配除了abcde这几个字母以外的任意字符
例:\S+:匹配不包含空白符的字符串
时间原因,笔记只记录到这里,日后有时间再继续学习补齐笔记。