正则表达式笔记3
敏感词过滤
//| : 或的意思
//replace : 第二个参数:可以是字符串,也可以是一个回调函数
//菲称仁爱礁附近17艘中国船均在菲军监视之下
window.onload = function(){ var aT = document.getElementsByTagName('textarea'); var oInput = document.getElementById('input1'); re = /菲称|中国|菲军/g; oInput.onclick = function(){ // 方法一 // aT[1].value = aT[0].value.replace(re,'*'); // 方法二 aT[1].value = aT[0].value.replace(re,function(str){ //函数的第一个参数:就是匹配成功的字符 console.log(str); var result = ''; for (var i = 0; i < str.length; i++) { result += '*'; }; return result; }); }; }
替换前<br /> <textarea> </textarea><br /> 替换后<br /> <textarea> </textarea><br /> <input type="button" value="确定" id="input1" />
匹配子项
//匹配子项 : 小括号 () (还有另外一个意思,分组操作) //1+1*2 //(1+1)*2 //把正则的整体叫做(母亲) //然后把左边第一个小括号里面的正则,叫做这个第一个子项(母亲的第一个孩子) //第二个小括号就是第二个孩子 var str = '2017-5-25'; var re = /(\d+)(-)/g; str = str.replace(re,function($0,$1,$2){ //第一个参数:$0(母亲),第二个参数 : $1(第一个孩子) //,第二个参数 : $1(第二个孩子) console.log( $1 ); return $1 + '.'; return $0.substring(0,$0.length-1) + '.'; }); console.log( str ); //2017.5.25 var str2 = 'abc'; var re = /(a)(b)(c)/; //[abc,a,b,c](当match不加g的时候才可以获取到子项的集合) console.log(str2.match(re));
字符类:
//字符类 : 一组相似的元素 [] 中括号的整体代表其中一个字符 var str = 'abdc'; var re =/a[bde]c/; console.log(re.test(str)); //false //排除 : ^ 如果^写在[]里面的话,就代表排除的意思 var str2 = 'abc'; var re = /a[^bdef]c/; console.log(re.test(str2)); //false var str3 = 'abc'; var re = /a[a-z0-9A-Z]c/; console.log( re.test(str3) ); //true
转义字符:
//. : 任意字符 //\. : 真正的点 var str = 'a.c'; var re = /a\.c/; console.log(re.test(str)); //true var str2 = 'abcdef'; var re2 = /a.cd/; console.log(re2.test(str2)); //true //\b : 独立的部分 匹配单词边界,不匹配任何字符 ( 起始,结束,空格 ) //\B : 非独立的部分 var str3 = 'onetwo'; var str4 = 'one two'; var re3 = /one\b/; console.log( re3.test(str3) ); //false console.log( re3.test(str4) ); //true /* \b说明: 我要从一堆原始数据中查找55这个数字,包括三种情况: 假设原始数据是: 123512,a55bcd,55abc,abc55,1235bs,asdfc,55, 1.要求:只有55,前后都不能有其他字符,比如a55bcd,55abc,abc55都是不行的 这种情况下,用\b55\b,\b就相当于一个停止分界线,告诉电脑55的前面和后面都不允许带字符 2.要求:以55开头,后面允许带字符比如55abc,55,但是a55bcd是不允许的 这种情况下,用\b55,这里只有55前面有停止分界线\b,告诉电脑前面不允许带字符,后面没有停止分界线,后面可以带字符 3.要求:以55结尾,前面允许带字符,后面不允许.比如abc55是允许的,但是a55bcd是不允许的 这种情况下,用55\b,这里是有55后面有停止分界线,告诉电脑后面不允许带字符,前面没有停止分界线,是允许 带字符的 */