标签:
正则 : 也叫做规则,让计算机能够读懂人类的规则
正则的写法:
//数组 var arr = []; var arr = new Array(); //对象 var obj = {}; var obj = new Object(); //正则: var re = /a/; var re = new RegExp(‘a‘);
转义字符
/* \s : 空格 \S : 非空格 \d : 数字 \D : 非数字 \w : 字符 ( 字母 ,数字,下划线_ ) \W : 非字符 */
正则的方法
test : 正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假
test的写法 : 正则.test(字符串)
var str = ‘abcdef‘; var re = /b/; alert( re.test(str) ); //true
var str = ‘374829348791‘; var re = /\D/; if( re.test(str) ){ alert(‘不全是数字‘); } else{ alert(‘全是数字‘); }
search : 正则去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回 -1
search的写法 : 字符串.search(正则)
正则中的默认 : 是区分大小写的
如果不区分大小写的话,在正则的最后加标识 i
var str = ‘abcdef‘; var re = /B/i; //var re = new RegExp(‘B‘,‘i‘); alert( str.search(re) );
match : 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null
match的写法 : 字符串.match(正则)
正则默认:正则匹配成功就会结束,不会继续匹配
如果想全部查找,就要加标识 g(全局匹配)
量词 : 匹配不确定的位置
+ : 至少出现一次
var str = ‘haj123sdk54hask33dkhalsd879‘; var re = /\d+/g; alert( str.match(re) ); //[1]
replace : 正则去匹配字符串,匹配成功的字符去替换成新的字符串
replace的写法 : 字符串.replace(正则,新的字符串)
var str = ‘aaa‘; var re = /a+/g; str = str.replace(re,‘b‘); alert(str);
| : 或的意思
replace : 第二个参数:可以是字符串,也可以是一个回调函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> //菲称仁爱礁附近17艘中国船均在菲军监视之下 //| : 或的意思 //replace : 第二个参数:可以是字符串,也可以是一个回调函数 window.onload = function(){ var aT = document.getElementsByTagName(‘textarea‘); var oInput = document.getElementById(‘input1‘); var re = /菲称|中国船|监视之下/g; oInput.onclick = function(){ //aT[1].value = aT[0].value.replace(re,‘*‘); aT[1].value = aT[0].value.replace(re,function(str){ //函数的第一个参数:就是匹配成功的字符 //alert( str ); var result = ‘‘; for(var i=0;i<str.length;i++){ result += ‘*‘; } return result; }); }; }; </script> </head> <body> 替换前<br /> <textarea> </textarea><br /> 替换后<br /> <textarea> </textarea><br /> <input type="button" value="确定" id="input1" /> </body> </html>
匹配子项
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> //匹配子项 : 小括号 () (还有另外一个意思,分组操作) //1+1*2 //(1+1)*2 //把正则的整体叫做(母亲) //然后把左边第一个小括号里面的正则,叫做这个第一个子项(母亲的第一个孩子) //第二个小括号就是第二个孩子 var str = ‘2013-6-7‘; var re = /(\d+)(-)/g; str = str.replace(re,function($0,$1,$2){ //第一个参数:$0(母亲),第二个参数 : $1(第一个孩子) //,第二个参数 : $1(第二个孩子) //alert( $2 ); //return $1 + ‘.‘; return $0.substring(0,$0.length-1) + ‘.‘; }); alert( str ); //2013.6.7 </script> </head> <body> </body> </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> var str = ‘abc‘; var re = /(a)(b)(c)/; alert( str.match(re) ); //[abc,a,b,c](当match不加g的时候才可以获取到子项的集合) </script> </head> <body> </body> </html>
字符类
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> //字符类 : 一组相似的元素 [] 中括号的整体代表一个字符 /*var str = ‘abdc‘; var re = /a[bde]c/; alert( re.test(str) );*/ //排除 : ^ 如果^写在[]里面的话,就代表排除的意思 /*var str = ‘abc‘; var re = /a[^bde]c/; alert( re.test(str) );*/ var str = ‘abc‘; var re = /a[a-z0-9A-Z]c/; alert( re.test(str) ); </script> </head> <body> </body> </html>
过滤标签
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> window.onload = function(){ var aT = document.getElementsByTagName(‘textarea‘); var oInput = document.getElementById(‘input1‘); //var re = /<\w+>/g; var re = /<[^>]+>/g; oInput.onclick = function(){ aT[1].value = aT[0].value.replace(re,‘‘); }; }; </script> </head> <body> 替换前<br /> <textarea> </textarea><br /> 替换后<br /> <textarea> </textarea><br /> <input type="button" value="确定" id="input1" /> </body> </html>
转义字符
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> //. : 任意字符 //\. : 真正的点 /*var str = ‘a.c‘; var re = /a\.c/; alert(re.test(str));*/ //\b : 独立的部分 ( 起始,结束,空格 ) //\B : 非独立的部分 var str = ‘onetwo‘; var re = /one\b/; alert( re.test(str) ); </script> </head> <body> </body> </html>
获取class的方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> //alert(‘\‘‘); window.onload = function(){ var aLi = getByClass(document,‘box1‘); for(var i=0;i<aLi.length;i++){ aLi[i].style.background = ‘red‘; } /*function getByClass(oParent,sClass){ var arr = []; var aEle = oParent.getElementsByTagName(‘*‘); for(var i=0;i<aEle.length;i++){ if( aEle[i].className == sClass ){ arr.push( aEle[i] ); } } return arr; }*/ function getByClass(oParent,sClass){ var arr = []; var aEle = oParent.getElementsByTagName(‘*‘); //var re = /sClass/; //当正则需要传参的时候,一定要用全称的写法 var re = new RegExp(‘\\b‘+sClass+‘\\b‘); for(var i=0;i<aEle.length;i++){ if( re.test(aEle[i].className) ){ arr.push( aEle[i] ); } } return arr; } }; </script> </head> <body> <ul> <li class="box1">111</li> <li>111</li> <li class="box1box2">111</li> <li>111</li> <li class="box1 box2">111</li> </ul> </body> </html>
找重复项最多的字符和个数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> var str = ‘assssjdssskssalsssdkjsssdss‘; var arr = str.split(‘‘); str = arr.sort().join(‘‘); //alert(str); var value = ‘‘; var index = 0; var re = /(\w)\1+/g; str.replace(re,function($0,$1){ //alert($0); if(index<$0.length){ index = $0.length; value = $1; } }); alert(‘最多的字符:‘+value+‘,重复的次数:‘+index); </script> </head> <body> </body> </html>
量词
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> //量词 : {} /*{4,7} : 最少出现4次,最多出现7次 {4,} : 最少出现4次 {4} : 正好出现4次 + : {1,} //\d{1,} ? : {0,1} : 出现0次或者1次 * : {0,} : 至少出现0次*/ var str = ‘ac‘; var re = /ab*/; alert(re.test(str)); </script> </head> <body> </body> </html>
判断是否是QQ号
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> //^ : 正则的最开始位置,就代笔起始的意思 //$ : 正则的最后位置 , 就代笔结束的意思 window.onload = function(){ var aInput = document.getElementsByTagName(‘input‘); var re = /^[1-9]\d{4,11}$/; aInput[1].onclick = function(){ if( re.test(aInput[0].value) ){ alert(‘是QQ号‘); } else{ alert(‘不是QQ号‘); } }; }; </script> </head> <body> <input type="text" /><input type="button" value="确定" /> </body> </html>
去掉前后的空格
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> var str = ‘ hello ‘; alert( ‘(‘+trim(str)+‘)‘ ); function trim(str){ var re = /^\s+|\s+$/g; return str.replace(re,‘‘); } //now777@qq.com //^\w+@[a-z0-9]+(\.[a-z]+){1,3}$ /*var re = { qq : /[1-9][0-9]{4,9}/, email : /^\w+@[a-z0-9]+(\.[a-z]+){1,3}$/, number : /\d+/ }; re.email*/ </script> </head> <body> </body> </html>
找出字符串中的多有的数字
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script> var str = ‘haj123sdk54hask33dkhalsd879‘; /*function findNum(str){ var arr = []; var tmp = ‘‘; for(var i=0;i<str.length;i++){ if( str.charAt(i)<=‘9‘ && str.charAt(i)>=‘0‘ ){ tmp += str.charAt(i); } else{ if(tmp){ arr.push(tmp); tmp = ‘‘; } } } if(tmp){ arr.push(tmp); tmp = ‘‘; } return arr; }*/ function findNum(str){ return str.match(/\d+/g); } alert( findNum(str) ); //[123,54,33,879] </script> </head> <body> </body> </html>
标签:
原文地址:http://www.cnblogs.com/liujin0505/p/4307627.html