关于JS中的“正则表达式”的小理解(一)

在开始了解正则之前,我们先看一个问题:怎么样找出一串字符串中的数字?

(1)用传统字符串操做完成

可以看出,这段代码虽然达到了我们的目的,但说实话,它看起来真的不简洁~而且显得很复杂

(2)用正则方法来做这个问题

这段代码也成功的显示出了结果。而且,它大大缩短了代码长度,比“传统”方法简便了很多很多。但是,对于(/\d+/g)这段代码,我相信大部分人看第一眼,也不知道它究竟是啥。


下面,就要开始说”正则表达式“这个东西,还有我对它学习的一些理解

 1. 什么是正则?

      这个问题百度一下,可以得到很完整的答案。在我看来,正则可以简单理解为一种规则或者模式,用这个规则书写后表达了某一些信息。它是一种强大的字符串匹配工具。

 2. 下面我们看一些代码:


var re=/a/i;
var str="Abcdef";
alert(str.search(re));  //0

这里的/a/的意思就是js中的RegExp('a'),也就是代表a这个字符,

/字符/便是正则中代表字符的写法,所有字符都要以"/" 开始 "/"结束。在/a/后边加上i,即/a/i,它的意思就是或略大小写,只要是a,无论是A还是a,都被检测到。所以,这个程序执行后,会弹出 a的位置:0 。


var str='ad24d ad28 3df16'
var re=/\d/g;

alert(str.match(re)); // 2,4,2,8,3,1,6

这里我们要新学一个表达式:/\d/其中\d的意思是,找到字符串中的数字;match()的意思是提取出字符串的内容。按理说,既然/\d/已经找到了字符串的数字,那么输出时一定会是所有数字;但是,实际上它输出的仅仅只有第一个数字:2;而当我们在/\d/后面加上g的时候,我们才得到了我们想要的结果,即输出所有数字。g全称:global,意思是所有。所以,我们若想得到所有的匹配结果,那么必须在后面加上g。


看上面代码,我们输出时,是把数字一个一个的输出来,我们能不能一段一段的输出呢

var str='ad24d ad28 3df16'
var re=/\d+/g;

alert(str.match(re)); // 24,28,3,16

可见,我们唯一改变的是:/\d+/g,这里的"+"意思是:若干。即把相邻的一串数字输出。


var oTxt1=document.getElementById('txt1');
var oTxt2=document.getElementById('txt2');
var oBtn=document.getElementById('btn');

oBtn.οnclick=function()
{
	var re=/fuck|mmp|shit/g;

	oTxt2.value=oTxt1.value.replace(re,'***')
}
		

这里我要讲的是关于正则中的替换:replace。这也是正则中最常用的地方,我们常常在公众聊天中看到,如果有人发脏话,那么这些脏话都会被***所代替,上述代码就有这样功能,当然这只是简单的一段,在大型的软件下,检测到文字成千上万,公司会有专门应对的方案。

我们先获取 敏感词汇 /词汇|词汇|词汇/g,”|“为或者,然后,我们在第一个文本框oTxt1输入一段内容后,用replace(被替换词汇,替换词汇),可以将敏感词汇过滤,在文本框oTxt2中变成用***替换后的文本。

完整代码:




	过滤敏感词汇
	
	


	



这些便是正则最基本的一些表达和用法,可见正则在处理字符串内容上大大简便了代码长度,极大的提高了效率,所以适当的时候使用正则将会是相当明智的选择。

后面再写更多的内容。





   


你可能感兴趣的:(summary)