javascript

位置:IT落伍者 >> javascript >> 浏览文章

js过滤HTML标签以及空格的思路及代码


发布日期:2021年10月04日
 
js过滤HTML标签以及空格的思路及代码

代码如下:


function setContent(str) {
str =  strreplace(/</?[^>]*>/g); //去除HTML tag
strvalue =  strreplace(/[ | ]*n/gn); //去除行尾空白
//str = strreplace(/n[s| |  ]*r/gn); //去除多余空行
return str;
}

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

代码如下:
function removeHTMLTag(str) {
str =  strreplace(/</?[^>]*>/g); //去除HTML tag
str = strreplace(/[ |  ]*n/gn); //去除行尾空白
//str = strreplace(/n[s| | ]*r/gn);  //去除多余空行
str=strreplace(/ /ig);//去掉
return str;
}

我的要求达到了

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

第一个:/</?[^>]*>/g

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

</?[^>]*>  这个分开来解释其中第二个字符“”是一个转移字符用来转移后面的”/”字符的?匹配个正好在它之前的那个字符注意这个元字符不是所有的软件都支持的所以</?就是匹配html标签中的”</”格式或者“<”格式的

再来说[^>]*>[]是含义是

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

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

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

div
我需要的文字</div

我需要的文字</p

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

div>我需要的文字</div
p>我需要的文字</p
br  /
再加上后面的>就可以匹配下面的字符了

div>我需要的文字</div>
p>我需要的文字</p>
br  />
这样就完成了一对HTML标签的匹配了(多句话总觉得这个匹配有点啰嗦但是不知道到底在哪个地方啰嗦)

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

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

               

上一篇:JS实现随机化快速排序的实例代码

下一篇:JS防止用户多次提交的简单代码