晓石头的博客
邮箱:178673693@qq.com
邮箱:178673693@qq.com
转载请注明出处,原文链接:http://blog.csdn.net/qiulanzhu/article/details/50663597
/*=========================正则表达式=========================*/
//创建正则表达式
//1.采用new运算符
var book1 = new RegExp('Book', 'ig'); //i:忽略大小写 g:全局匹配
//2.字面量方式
var book2 = /book/;
var str = "this is a book! realy book";
document.write(book1.test(str));
document.write(book1.exec(str));
//String对象中的正则表达式方法
//match
var apple = /apple/ig;
var strapp = 'this is a apple, that is apple too!';
document.write(strapp.match(apple));
document.write(strapp.match(apple).length);
//search
var boy = /boy/ig;
var strboy = 'this is a boy, that is boy too!';
document.write(strboy.search(boy)); //返回查找到的位置,没有查找到返回-1。ps:search无需g全局,因为找到就返回
//replace
var pattern = /box/ig;
var strbox = "this is box, that is box!";
document.write(strbox.replace(pattern, 'desk')); //将box替换成desk
//split
var patstr = / /ig;
var myStr = 'this is box! that is box!';
document.write(myStr.split(patstr)); //用空格拆分成数组
//RegExp的静态属性
var patgoogle = /googl(e)/;
var googleStr = 'this is google!';
patgoogle.test(googleStr);
document.write(RegExp.input);
document.write(RegExp.leftContext);
document.write(RegExp.rightContext);
document.write(RegExp.lastMatch);
document.write(RegExp.lastParen);
//RegExp对象的实例属性
var patbook = /book/igm;
var bookStr = 'book, book, book!';
document.write(patbook.global);
document.write(patbook.ignoreCase);
document.write(patbook.multiline);
document.write(patbook.source);
document.write(patbook.lastIndex); //下次的匹配位置
patbook.test(bookStr);
document.write(patbook.lastIndex);
patbook.lastIndex = 10;
document.write(patbook.lastIndex);
//
//使用点元字符
var pat = /g..gle/; //.:表示匹配任意字符
var str = 'google';
document.write(pat.test(str));
//重复匹配
var pat1 = /go*gle/; //o*:表示匹配任意多个o(包括0个)
var str1 = 'gogle';
document.write(pat1.test(str1));
var pat2 = /go+gle/; //o+:表示匹配至少一个o
var str2 = 'gooogle';
document.write(pat2.test(str2));
var pat3 = /go?gle/; //o?:表示匹配0或者1个o
var str3 = 'ggle';
document.write(pat3.test(str3));
var pat4 = /go{2,4}gle/; //o{2,4}:表示匹配2-4个o
var str4 = 'goooogle';
document.write(pat4.test(str4));
var pat5 = /go{2}gle/; //o{2}:表示限定俩个o
var str5 = 'google';
document.write(pat5.test(str5));
var pat6 = /go{2,}gle/; //o{2,}:表示俩个及其以上的o
var str6 = 'goooogle';
document.write(pat6.test(str6));
//字符匹配
var mat = /[a-zA-Z0-9]oogle/; //[a-z]:表示26个小写英文字符中的任意一个都匹配,[a-zA-Z0-9]:表示字母数字全匹配
var matstr = '3oogle';
document.write(mat.test(matstr));
var mat1 = /[^0-9]oogle/; //[^0-9]:表示非0-9都匹配
var matstr1 = 'qoogle';
document.write(mat1.test(matstr1));
//锚元字符匹配
var yuan = /^[a-z]oogle/; //[]前的^表示行首匹配,[]里的^表示非
var yuanstr = 'ggoogle';
document.write(yuan.test(yuanstr));
var yuan = /^[a-z]oogle$/; //[]前的^表示行首匹配,$尾匹配
var yuanstr = 'google1';
document.write(yuan.test(yuanstr));
var yuan1 = /\woogle/; //\w表示数字字母下划线[0-9a-zA-A_]
var yuanstr1 = 'ggoogle';
document.write(yuan1.test(yuanstr1));
var yuan2 = /\Woogle/; //\W表示非数字字母下划线[^0-9a-zA-A_]
var yuanstr2 = 'ggoogle';
document.write(yuan2.test(yuanstr2));
var yuan3 = /\doogle/; //\d表示数字[0-9]
var yuanstr3 = '2oogle';
document.write(yuan3.test(yuanstr3));
var yuan4 = /\Doogle/; //\D表示非数字[^0-9]
var yuanstr4 = 'ggoogle';
document.write(yuan4.test(yuanstr4));
var space = /goo\s*gle/; //\s表示匹配空格 制表符
var spacestr = 'goo gle';
document.write(space.test(spacestr));
var space1 = /google\b/; //\b表示是否到达边界
var spacestr1 = 'google end';
document.write(space1.test(spacestr1));
var space2 = /google|baidu|bing/; //|表示或匹配
var spacestr2 = 'this is bing';
document.write(space2.test(spacestr2));
//分组
var div = /123(google){2,3}/;
var divstr = 'this is 123googlegoogle';
document.write(div.test(divstr));
var div1 = /8(.*)8/; //.*表示任意字符
var divstr1 = 'this is 8google8';
document.write(div1.test(divstr1));
document.write(RegExp.$1); //$1表示第一个分组的内容
var div2 = /8(.*)8/; //.*表示任意字符
var divstr2 = 'this is 8google8';
document.write(divstr2.replace(div2, '<strong>$1</strong>')); //加粗分组一
var div3 = /(.*)\s(.*)/;
var divstr3 = 'google baidu';
document.write(divstr3.replace(div3, '$2,$1') +'<br>'); //交换分组一和分组二的顺序
var div4 = /^([a-z]*)\s([0-9]{4})$/; // /^(?:[a-z]*)\s(?:[0-9]{4})$/ 非捕获性分组,?:表示不会捕获这个分组
var divstr4 = 'google 2016';
document.write(div4.exec(divstr4)); //google 2016,google,2016 :数组0-表示匹配的全部,数组1-表示匹配的分组一, 数组2-表示匹配的分组二
//贪婪和惰性
var google = /8(.*?)8/g; //加?,使用惰性; 加g,使用全局
var googlestr = '8google8 8google8 8google8 8google8';
document.write(googlestr.replace(google, '<strong>$1</strong>'));
var google1 = /8([^8]*)8/g; //不匹配8
var googlestr1 = '8google8 8google8 8google8 8google8';
document.write(googlestr1.replace(google1, '<strong>$1</strong>'));
//前瞻性捕获
var google2 = /goo(?=gle)/;
var googlestr2 = 'google';
document.write(google2.exec(googlestr2)); //返回的是goo
//正在表达式用到的特殊符号,前面需要加转义符
var change = /\[\]/;
var changestr = '[]';
document.write(change.test(changestr));
//使用换行模式
var row = /^[0-9]+/gm; //如果限定了行首匹配,则需要开启换行模式
var rowstr = '1.baidu\n2.google\n3.bing';
document.write(rowstr.replace(row, '#'));
//常用的正则
//检查邮政编码
var post = /[1-9][0-9]{5}/; //6位数字,第一位不能是0
var poststr = '402207';
document.write(post.test(poststr));
//检测文件压缩包
//var com = /^[\w\-]+\.zip|rar|gz$/;
var com = /zip$|rar$|gz$/;
var comstr = 'abc-123.rar';
document.write(com.test(comstr));
//删除多余空格
var spastr = ' abc 123 345 678';
var spa = /[\s]+/g;
document.write(spastr.replace(spa, ''));
//删除首尾空格
//方法一:依次去掉首尾
var headstr = ' goo gle ';
//alert('|' + headstr + '|');
var head = /^[\s]+/;
var headstr1 = headstr.replace(head, '');
//alert('|' + headstr1 + '|');
var tail = /[\s]+$/;
//alert('|' + headstr1.replace(tail, '') + '|');
//方法二:利用分组
var distr = ' goo gle ';
var di = /(^\s+)(.*?)(\s+$)/; //加?,使用惰性
//alert(di.exec(distr)[2]);
//alert(distr.replace(di,'$2'));
//电子邮件验证
var mailstr = 'jin_yaoshi@163.com';
var mail = /^([\w_/./-]+)@([\w\-]+)\.([a-zA-Z]{2,4})$/;
document.write(mail.test(mailstr));