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

2019-12-24,,,,

复制代码 代码如下:
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个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。所以<\/?就是匹配html标签中的”</”格式或者“<”格式的。


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



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


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


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


div
我需要的文字</div

我需要的文字</p


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


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


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


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


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

您可能感兴趣的文章:

  • AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
  • js中过滤特殊字符的正则表达式
  • Javascript 5种方法实现过滤删除前后所有空格
  • js特殊字符过滤的示例代码
  • 用js实现过滤script的正则
  • JS敏感词过滤代码
  • js过滤HTML标签完整实例
  • 利用javascript/jquery对上传文件格式过滤的方法
  • 用于过滤空白字符的几种常见的js正则表达式pattern
  • js限制input只能输入有效的数字(第一个不能是小数点)
  • 原生JS 实现的input输入时表格过滤操作示例

《js过滤HTML标签以及空格的思路及代码.doc》

下载本文的Word格式文档,以方便收藏与打印。