最近看了李**的教程,大概整理了一下js中正则的一些新手入门的知识。
/*
var pattern = /Box/i;
var str = "This is a box!";
alert(pattern.test(str)); //This is a box! 中是否包含不区分大小写的box
var pattern = /Box/i;
var str = 'box';
alert (pattern.exec(str));
alert (typeof pattern.exec(str)); //返回的数组,有就返回数组的值,如果没有匹配到 就返回null
//String对象中的正则表达式方法
// match(pattern) 返回pattern中的子串或null
// replace(pattern,placement)
//search(pattern) 返回字符串中pattern开始位置
//split(pattern) 返回字符串按指定pattern拆分的数组
var pattern = /Box/i; //没有开启全局
var str='This is a Box! That is a Box!';
alert(str.match(pattern));
var pattern = /Box/ig; //开启全局
var str='This is a Box! That is a Box!';
alert(str.match(pattern));
var pattern = /Box/ig; //
var str='This is a Box! That is a Box!';
alert(str.search(pattern));
var pattern = /Box/i; //查找即返回,无需g全局,若找不到则返回-1
var str='This is a Box! That is a Box!';
alert(str.search(pattern));
var pattern = /Box/ig;
var str='This is a Box! That is a Box!';
alert(str.replace(pattern,'Tom')); //返回替换后的字符串
alert(str); //原字符串没有变化
var pattern = / /ig; //空格
var str='This is a Box! That is a Box!';
alert(str.split(pattern));
var pattern = /google/i;
var str='This is a google!';
pattern.test(str); //必须执行一次 ,静态属性才有效
// alert(RegExp.input); //当期被匹配的字符串
// alert(RegExp.leftContext);
// alert(RegExp.rightContext);
// alert(RegExp.lastMatch);
// alert(RegExp.lastPaten); //最后一对圆括号内的匹配字符串
// alert(RegExp.multiline); //用于指定是否所有的表达式都用于多行的布尔值、、不好用
//获取控制部分
. //匹配除换行符外的任意字符
[a-z0-9] //匹配括号中的字符集 中的任意字符
[^a-z0-9] //匹配不在括号中
\d //匹数字
\D //匹非数字
\w //匹配字母和数字及_
\W //匹配非字母和数字及_
锚字符
^ //行首匹配
$ //行尾匹配
\A //只有匹配字符串开始处
\b //匹配单词边界,词在【】内无效
\B //匹配非单词边界
\G //匹配当前搜索的开始位置
\Z //匹配字符串结束处或行尾
\z //只匹配字符串结束处
空白字符
\0 //匹配null字符
\b //匹配空格字符
\f //匹配
\n //匹配换行符
\r //匹配回车符
\t //匹配制表符
\s //匹配空白字符,空格,制表符,和换行符
\S //匹配非空白字符
var pattern = /g.gle/;
var str ='gogle';
alert(pattern.test(str));
var pattern = /go*gle/; //o* 表示0个,1个 或者多个o,*表示前面一个字符
var str ='gogle';
alert(pattern.test(str));
var pattern = /go+gle/; //o+ 表示1个或者多个
var str ='gogle';
alert(pattern.test(str));
var pattern = /go?gle/; //o? 表示1个或者0个
var str ='gogle';
alert(pattern.test(str));
var pattern = /go{2,4}gle/; //o{n,m} 表示大于等于n,小于等于m个 o
var str ='gogle';
alert(pattern.test(str));
var pattern = /go{3}gle/; //o{n} 表示限定3个o
var str ='gogle';
alert(pattern.test(str));
var pattern = /go{3,}gle/; //o{n} 表示限定3个o,或三个以上
var str ='gogle';
alert(pattern.test(str));
var pattern = /[a-zA-Z0-9]oogle/; //表示匹配
var str ='8oogle';
alert(pattern.test(str));
var pattern = /^[0-9]oogle/; //这个^符号,是加在/后面而不是【】里面,从行首开始匹配
var str ='8oogle';
alert(pattern.test(str));
var pattern = /\woogle/;
var str ='8oogle';
alert(pattern.test(str));
var pattern = /\woogle$/; //强制尾匹配
var str ='8oogle';
alert(pattern.test(str));
var pattern = /google|baidu|bing/; //|表示匹配或选择模式
var str ='baidu';
alert(pattern.test(str));
var pattern = /(google){4,8}/; //分组,可以看成一个字符
var str ='google'; //表示 google 4-8次
alert(pattern.test(str));
var pattern = /^[a-z]+\s[0-9]{4}$/;
var str = 'goole 2012';
alert (pattern.test(str));
var pattern = /^[a-z]+\s[0-9]{4}$/;
var str = 'goole 2012';
alert (pattern.exec(str)); //返回字符串数组
var pattern = /^[a-z]+/;
var str = 'google 2012';
alert (pattern.exec(str)); // 只返回google
var pattern = /^([a-z]+)\s([0-9]{4})$/;
var str = 'goole 2012';
alert (pattern.exec(str)); // 捕获性分组返回字符串数组 a0 返回整个,a1返回第一个。。。
var pattern = /^([a-z]+)\s(?:[0-9]{4})$/;
var str = 'goole 2012';
alert (pattern.exec(str)); // 非捕获性,就是不需要捕获, 在前面加上?:
var pattern = /(a?(b?(c?)))/
var str = 'abc' //嵌套分组
var pattern = /goo(?=gle)/; //goo后必须跟gle才匹配 ,前瞻性捕获
var str = 'goobb';
alert (pattern.exec(str));
var pattern = /^\d+/gm; //限定首,开启换行, 开启全局
var str = '1.baidu\n2.google\n3.bing';
alert(str.replace (pattern,'#'));
//常用的 正则
//检查邮编
var pattern = /[1-9][0-9]{5}/;
var str = 'this is 224000'; //6位,数字,第一位非零
alert(pattern.test(str));
//文件压缩包匹配
var pattern = /^[\w\-]+\.(zip|gz|rar)$/; //首开始
var str = '21-3.zip'; //文件名:字母,下划线,数字,后面加点,zip,gz,rar,7z
alert(pattern.test(str));
*/
//验证电子邮件
var pattern = /^([\w\.\-]+)@([\w\-]+)\..*$/;
// var pattern = /^([\w\.\-]+)@([\w\-]+)\.(a-zA-Z){2,4}$/;
str = 'yc6.com@gmail.com';
alert (pattern.test(str));