js过滤HTML标签以及 


======================================================
注:本文源代码点此下载
======================================================

今天要做一个应用--判断编辑器中文字的个数。如果少如20个字就不能让其提交。没多想,正好周末的时候看了一下js中正则表达式的内容。很容易就想到了要用正则表达式来解决这个问题。虽说看了正则表达式的内容是看了,但是毕竟还是刚接接触,连基本的概念都很模糊,于是只好在网上找到如下的代码:

function setcontent(str) {

str = str.replace(/]*>/g,''); //去除html tag

str.value = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白

//str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行

return str;

}

测试的时候发现这段代码不能过滤掉网页中空格字符(即: )。于是自己又改造了一下:

function removehtmltag(str) {

str = str.replace(/]*>/g,''); //去除html tag

str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白

//str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行

str=str.replace(/ /ig,'');//去掉

return str;

}

恩,我的要求达到了。

现在来稍稍解释一下所用到的三个正则表达吧(需要说明的是,因为自己也是刚刚接触,也许我的解释并不是正确的,仅供参考):

第一个:/]*>/g

在js中正则表达式是以“/”开头的,后面的/g,含义是表示全局模式,意思是在将匹配的模式应用于整个字符串,而不是在第一次匹配上之后就停止匹配了。

]*> 这个分开来解释,其中第二个字符“\”是一个转移字符,用来转移后面的”/”字符的。?匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。所以]*>。[]是含义是:

^的含义是:匹配一行的开始。例如正则表达式^when in能够匹配字符串"when in the course of human events"的开始,但是不能匹配"what and when in the"。意思就是匹配以“when in”开头的文字。

*的含义是:匹配0或多个正好在它之前的那个字符。例如正则表达式。*意味着能够匹配任意数量的任何字符

因此[^>]*意思是匹配>之外的字符。所以[^>]可以匹配出的模式可以像下面这样的:

div

我需要的文字

p

我需要的文字

*和前面的[^>]结合在一起就可以匹配下面这些字符了:

div>我需要的文字

p>我需要的文字

br /

再加上后面的>就可以匹配下面的字符了:

div>我需要的文字

p>我需要的文字

br />

这样就完成了一对html标签的匹配了。(多句话,总觉得这个匹配有点啰嗦,但是不知道到底在哪个地方啰嗦)

第二个:/[ | ]*\n/g:我也没有看懂

第三个:/ /ig:就是直接查找 字符,后面的/ig的含义是在全局模式下进行不区分大小写的查找。g代表全局,i表示不区分大小写。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值