正则表达式笔记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后面有停止分界线,告诉电脑后面不允许带字符,前面没有停止分界线,是允许   带字符的
		*/
posted @ 2017-05-26 11:52  波克比520  阅读(173)  评论(0编辑  收藏  举报