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

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

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

<script>
var str="12  f2 ggg 4ds21"
var arr=[];
var tmp='';

for(var i=0;i<str.length;i++)
{
       if(str.charAt(i)>='0'&& str.charAt(i)<='9')
{
       tmp+=str.charAt(i);
}
else
{
       if(tmp)
        {
            arr.push(tmp);
            tmp='';
         }
}
}
if(tmp)
        {
            arr.push(tmp);
            tmp='';
         }
   alert(arr);

</script>

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

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

<script>
var str="12  f2 ggg 4ds21"

alert(str.match(/\d+/g));
</script>
这段代码也成功的显示出了结果。而且,它大大缩短了代码长度,比“传统”方法简便了很多很多。但是,对于(/\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中变成用***替换后的文本。

完整代码:

<!DOCTYPE html>
<html>
<head>
	<title>过滤敏感词汇</title>
	<meta charset="utf-8">
	<script type="text/javascript">
		window.οnlοad=function()
		{
			var oTxt1=document.getElementById('txt1');
			var oTxt2=document.getElementById('txt2');
			var oBtn=document.getElementById('btn');

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

				oTxt2.value=oTxt1.value.replace(re,'***')
			}
		}
	</script>
</head>
<body>
	<textarea rows="10" cols="40" id="txt1"></textarea><br>
	<input type="button" value="过滤" id="btn" name=""><br>
	<textarea rows="10" cols="40" id="txt2"></textarea>

</body>
</html>


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

后面再写更多的内容。





   


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值