- 浏览: 664105 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (173)
- ajax (4)
- ant (4)
- css (14)
- eclipse (1)
- exe4j (0)
- hibernate (7)
- html (29)
- http (2)
- install4j (0)
- java (35)
- javascript (31)
- jdbc (1)
- jquery (2)
- jsp (15)
- linux命令 (8)
- ooad (2)
- properties (3)
- servlet (1)
- spring (3)
- struts (6)
- swing (4)
- thread (2)
- version_control (1)
- webservice (4)
- xml (4)
- 数据库 (19)
- 正则表达式 (5)
- 其他 (16)
- 面试题 (1)
- 框架 (9)
- maven (1)
- util (29)
- 设计模式 (1)
最新评论
-
herodie4444:
看起来好像不难。
Java Struts2创建Excel文件并实现文件下载 -
心轨翼:
Java遍历Set集合方法 -
魔鬼的献祭:
...
java的web开发分页工具类 -
Nmxszxsl:
能发一个没有被墙的代码到我的邮箱吗?万分感谢。54365156 ...
Google翻译post提交无长度限制的在线翻译例子 -
782763595:
...
jar包混淆器介绍
替换html标签的正则表达式
方法一 : 禁用HTML
最简单的方法是直接禁用html标签而不用移除它们. 可以使用Replace()函数. 例如:
strText = Replace(strText, " <script ", "<script ", 1, -1, 1)
或者直接禁用所有的html:
strText = Replace(strText, " < ", "< ")
这样做虽然很安全,但显得不够友好.(用户提交的文本会变得难以阅读)
方法二: 使用 " < "和 "> "
怎样使得html标签从文本中消失呢? 我们可以去掉 " < "和 "> "中间的所有内容
在JavaScript中这很简单:
function RemoveHTML( strText )
{
var regEx = / <[^> ]*> /g;
return strText.replace(regEx, " ");
}
关于正则表达式可以参考: http://developer.netscape.com/docs/manuals/js/client/jsguide/regexp.htm.
现在回到VBScript, 对于Scripting引擎5.0或更高版本(可以通过调用ScriptEngineMajorVersion和ScriptEngineMinorVersion函数来检验版本),我们也可以使用RegExp物体:
Function RemoveHTML( strText )
Dim RegEx
Set RegEx = New RegExp
RegEx.Pattern = " <[^> ]*> "
RegEx.Global = True
RemoveHTML = RegEx.Replace(strText, " ")
End Function
若不用正则表达式,下面的函数可以达到同样的目的:
Function RemoveHTML( strText )
Dim nPos1
Dim nPos2
nPos1 = InStr(strText, " < ")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, "> ")
If nPos2 > 0 Then
strText = Left(strText, nPos1 - 1) & Mid(strText, nPos2 + 1)
Else
Exit Do
End If
nPos1 = InStr(strText, " < ")
Loop
RemoveHTML = strText
End Function
以上的方法虽然都可以去掉括号内的html标签,但是这些方法都存在以下问题:
首先,文本内的任何不表示html的尖括号会被去除.而且两个尖括号中间的文本也会被删掉.换句话说,在文本中插入任何 " < "或 "> "都会出现不可预料的结果.
另外,这种方法不能控制删除哪些html标签.比如 <b> <i> 这些无害的标签通常是允许的.
方法三:使用IE或其他工具
有很多缺点:
"It may be desirable to parse HTML files inside a Web server process in response to a browser page request. However, the WebBrowser control, DHTML Editing Control, MSHTML, and other Internet Explorer components may not function properly in an Active Server Pages (ASP) page or other application run in a Web server application. " (http://support.microsoft.com/support/kb/articles/Q244/0/85.ASP?LN=EN-US&SD=gn&FR=0)
方法四:VBScript
以下的函数可以限制到具体的html标签
简介:
要控制被删除的标签列表,可以通过向TAGLIST常数中添加/删除标记来实现. 例如,要保留所有的 <B> 标签,则从TAGLIST中删除B. 当前的列表包含了MSDN中的所有html标签以及 LAYER 标签. 每个标签要用 "; "括起来.
开始标签和结束标签都会被删除,例如 " <A...> "和 </A...>
若标签同时在 TAGLIST 和 BLOCKTAGLIST 常数中,则起始标签和结束标签之间的所有内容都会被删除
没有结束标记的标签不被视为html标签,其内容不会被删除
块标签若没有结尾标记,从此标签开始到文本结束的所有内容会被删除
若 " <!-- "后跟的字符不是空格,注释标签不会被删除
使用这个函数很简单:
strPlainText = RemoveHTML(strTextWithHTML)
函数内容如下:
Function RemoveHTML( strText )
Dim TAGLIST
TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT; " &_
"BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE; " &_
"COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET; " &_
"FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG; " &_
"INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE; " &_
"MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT; " &_
"PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP; " &_
"TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP; "
Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE; "
Dim nPos1
Dim nPos2
Dim nPos3
Dim strResult
Dim strTagName
Dim bRemove
Dim bSearchForBlock
nPos1 = InStr(strText, " < ")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, "> ")
If nPos2 > 0 Then
strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
nPos3 = InStr(strTagName, " ")
If nPos3 > 0 Then
strTagName = Left(strTagName, nPos3 - 1)
End If
If Left(strTagName, 1) = "/ " Then
strTagName = Mid(strTagName, 2)
bSearchForBlock = False
Else
bSearchForBlock = True
End If
If InStr(1, TAGLIST, "; " & strTagName & "; ", vbTextCompare) > 0 Then
bRemove = True
If bSearchForBlock Then
If InStr(1, BLOCKTAGLIST, "; " & strTagName & "; ", vbTextCompare) > 0 Then
nPos2 = Len(strText)
nPos3 = InStr(nPos1 + 1, strText, " </ " & strTagName, vbTextCompare)
If nPos3 > 0 Then
nPos3 = InStr(nPos3 + 1, strText, "> ")
End If
If nPos3 > 0 Then
nPos2 = nPos3
End If
End If
End If
Else
bRemove = False
End If
If bRemove Then
strResult = strResult & Left(strText, nPos1 - 1)
strText = Mid(strText, nPos2 + 1)
Else
strResult = strResult & Left(strText, nPos1)
strText = Mid(strText, nPos1 + 1)
End If
Else
strResult = strResult & strText
strText = " "
End If
nPos1 = InStr(strText, " < ")
Loop
strResult = strResult & strText
RemoveHTML = strResult
End Function
方法一 : 禁用HTML
最简单的方法是直接禁用html标签而不用移除它们. 可以使用Replace()函数. 例如:
strText = Replace(strText, " <script ", "<script ", 1, -1, 1)
或者直接禁用所有的html:
strText = Replace(strText, " < ", "< ")
这样做虽然很安全,但显得不够友好.(用户提交的文本会变得难以阅读)
方法二: 使用 " < "和 "> "
怎样使得html标签从文本中消失呢? 我们可以去掉 " < "和 "> "中间的所有内容
在JavaScript中这很简单:
function RemoveHTML( strText )
{
var regEx = / <[^> ]*> /g;
return strText.replace(regEx, " ");
}
关于正则表达式可以参考: http://developer.netscape.com/docs/manuals/js/client/jsguide/regexp.htm.
现在回到VBScript, 对于Scripting引擎5.0或更高版本(可以通过调用ScriptEngineMajorVersion和ScriptEngineMinorVersion函数来检验版本),我们也可以使用RegExp物体:
Function RemoveHTML( strText )
Dim RegEx
Set RegEx = New RegExp
RegEx.Pattern = " <[^> ]*> "
RegEx.Global = True
RemoveHTML = RegEx.Replace(strText, " ")
End Function
若不用正则表达式,下面的函数可以达到同样的目的:
Function RemoveHTML( strText )
Dim nPos1
Dim nPos2
nPos1 = InStr(strText, " < ")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, "> ")
If nPos2 > 0 Then
strText = Left(strText, nPos1 - 1) & Mid(strText, nPos2 + 1)
Else
Exit Do
End If
nPos1 = InStr(strText, " < ")
Loop
RemoveHTML = strText
End Function
以上的方法虽然都可以去掉括号内的html标签,但是这些方法都存在以下问题:
首先,文本内的任何不表示html的尖括号会被去除.而且两个尖括号中间的文本也会被删掉.换句话说,在文本中插入任何 " < "或 "> "都会出现不可预料的结果.
另外,这种方法不能控制删除哪些html标签.比如 <b> <i> 这些无害的标签通常是允许的.
方法三:使用IE或其他工具
有很多缺点:
"It may be desirable to parse HTML files inside a Web server process in response to a browser page request. However, the WebBrowser control, DHTML Editing Control, MSHTML, and other Internet Explorer components may not function properly in an Active Server Pages (ASP) page or other application run in a Web server application. " (http://support.microsoft.com/support/kb/articles/Q244/0/85.ASP?LN=EN-US&SD=gn&FR=0)
方法四:VBScript
以下的函数可以限制到具体的html标签
简介:
要控制被删除的标签列表,可以通过向TAGLIST常数中添加/删除标记来实现. 例如,要保留所有的 <B> 标签,则从TAGLIST中删除B. 当前的列表包含了MSDN中的所有html标签以及 LAYER 标签. 每个标签要用 "; "括起来.
开始标签和结束标签都会被删除,例如 " <A...> "和 </A...>
若标签同时在 TAGLIST 和 BLOCKTAGLIST 常数中,则起始标签和结束标签之间的所有内容都会被删除
没有结束标记的标签不被视为html标签,其内容不会被删除
块标签若没有结尾标记,从此标签开始到文本结束的所有内容会被删除
若 " <!-- "后跟的字符不是空格,注释标签不会被删除
使用这个函数很简单:
strPlainText = RemoveHTML(strTextWithHTML)
函数内容如下:
Function RemoveHTML( strText )
Dim TAGLIST
TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT; " &_
"BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE; " &_
"COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET; " &_
"FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG; " &_
"INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE; " &_
"MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT; " &_
"PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP; " &_
"TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP; "
Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE; "
Dim nPos1
Dim nPos2
Dim nPos3
Dim strResult
Dim strTagName
Dim bRemove
Dim bSearchForBlock
nPos1 = InStr(strText, " < ")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, "> ")
If nPos2 > 0 Then
strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
nPos3 = InStr(strTagName, " ")
If nPos3 > 0 Then
strTagName = Left(strTagName, nPos3 - 1)
End If
If Left(strTagName, 1) = "/ " Then
strTagName = Mid(strTagName, 2)
bSearchForBlock = False
Else
bSearchForBlock = True
End If
If InStr(1, TAGLIST, "; " & strTagName & "; ", vbTextCompare) > 0 Then
bRemove = True
If bSearchForBlock Then
If InStr(1, BLOCKTAGLIST, "; " & strTagName & "; ", vbTextCompare) > 0 Then
nPos2 = Len(strText)
nPos3 = InStr(nPos1 + 1, strText, " </ " & strTagName, vbTextCompare)
If nPos3 > 0 Then
nPos3 = InStr(nPos3 + 1, strText, "> ")
End If
If nPos3 > 0 Then
nPos2 = nPos3
End If
End If
End If
Else
bRemove = False
End If
If bRemove Then
strResult = strResult & Left(strText, nPos1 - 1)
strText = Mid(strText, nPos2 + 1)
Else
strResult = strResult & Left(strText, nPos1)
strText = Mid(strText, nPos1 + 1)
End If
Else
strResult = strResult & strText
strText = " "
End If
nPos1 = InStr(strText, " < ")
Loop
strResult = strResult & strText
RemoveHTML = strResult
End Function
发表评论
-
java读取.properties配置文件的几种方法
2017-09-22 09:38 670读取.properties配置文件在实际的开发中使用的很多,总 ... -
java前后台字符串编码转换
2016-12-15 15:52 799此文为应用中遇到字符串编码转换问题网上找资料解决问题记录笔记, ... -
JavaScript replace字符串替换函数的用法
2016-10-19 15:21 875replace 语法 stringObj.replace(rg ... -
JS Date函数整理
2015-01-30 10:43 1067JS Date 对象用于处理日期和时间。 创建 Date 对象 ... -
Java Struts2创建Excel文件并实现文件下载
2015-01-16 17:42 1882在做管理系统的时候,经常会用到文件的下载,特别是Excel报表 ... -
js中setInterval与setTimeout用法
2014-11-19 17:09 1031下面详述js中的延时任务与周期任务的实现。 1.setTim ... -
java枚举类型(转)
2012-12-24 18:34 4971public class TestEnum { ... -
转 js中数据类型判断(转)
2012-11-05 11:07 1139转载自: http://www.cnblogs.com/yjh ... -
日期比较例子
2012-10-16 15:30 1211/** * 时间日期比较处理例子 * @autho ... -
包含日期和时间的选择器(转)
2012-09-27 16:11 1092转载自: http://www.cnblogs.com/swe ... -
基于hibernate的数据持久化处理简单实现类
2012-09-26 20:03 1771package com.forveross.plane.s ... -
jsp通用分页实现脚本
2012-09-26 17:12 1701工具脚本使用时只需替换url的问号前半部分即可。 此页面需要j ... -
Java过滤html标签
2012-09-21 09:54 1808方法一: String oldStr="< ... -
Web项目设置页面不缓存
2012-08-04 19:55 2868htm网页 <meta http-equiv=&qu ... -
Java文件保存与删除工具类
2012-07-26 15:46 4352import java.io.File; import ... -
linux修改系统时间(RHEL)
2012-07-20 16:53 951一般使用“date -s”命令来修改系统时间 比如将系统时间 ... -
使用Filter实现访问监控
2012-07-15 21:40 1513实现Servlet的接口过滤器接口Filter实现对用户访问页 ... -
使用AOP实现监控日志并保存
2012-07-13 20:42 6003最近项目中要做个效能监控的功能,经过考虑,觉得选择spring ... -
POI兼容读取Excel2003和Excel2007
2012-06-29 16:00 9448import java.io.File; import ... -
eclipse自动弹出提示的设置
2012-06-27 11:39 2138一、只弹出简单的单词提示(如输入system.的时候自动弹出o ...
相关推荐
- 文本转换:批量修改文本格式,如大小写转换、HTML标签替换等。 总的来说,易语言的正则表达式文本替换功能提供了强大的文本处理能力,对于需要处理和分析文本的程序开发者来说,掌握这项技能能极大地提高工作...
/>` - 这个正则表达式用于找出HTML文档中的标签,但不适用于复杂的嵌套标记。 5. 匹配首尾空白字符:`^s*|s*$` - 该正则表达式用于删除字符串开始或结束的空格、制表符等空白字符。 6. 匹配Email地址:`w+([-+.]w...
正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换操作。它由特殊字符(称为“元字符”)和普通字符组成,能够灵活地定义要查找的模式。以下是一些常见的正则表达式模式及其用途: 1. ...
通过定义一组规则来识别文本中的特定模式,正则表达式被广泛应用于各种场景,如数据验证、搜索替换等。 ### 数字验证 1. **纯数字验证**:只允许输入纯数字。 - 正则表达式:`^[0-9]*$` - 示例:`12345` 2. **...
3. **文本替换**:基于模式对文本进行替换操作,如去除HTML标签、转换大小写等。 4. **数据提取**:从复杂的数据中提取所需的信息,如从网页中抓取特定内容。 5. **日志分析**:从系统日志中提取关键信息进行监控和...
在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。本资源“源码(精通正则表达式&实战正则表达式)”专注于JavaScript环境下的正则...
正则表达式是处理字符串的强大工具,它允许我们对字符串进行匹配、搜索、替换等操作。在JavaScript中,正则表达式以斜杠“/”包围的形式出现,例如`/pattern/flags`。在处理HTML文档时,经常会遇到需要从HTML代码中...
使用JS正则表达式,选取video元素的src属性的值,利用jQuery选取元素
3. **去除HTML标签**:使用 `<[^>]*>` 可以找到并替换掉文本中的HTML标签。 4. **数字格式化**:将连续的数字字符替换为逗号分隔的格式,如 `(\d{1,3}(?=(\d{3})+(?!\d)))` 可以实现这个功能。 六、注意事项 - ...
java正则表达式过滤html标签 java正则表达式过滤html标签是指使用java语言中的正则表达式来过滤html标签的操作。HtmlRegexpUtil这个工具类提供了多种过滤html标签的方法,包括过滤所有以"开头以">"结尾的标签、找出...
正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换等操作符合某种规则的字符串。在Java中,通过`java.util.regex`包提供了对正则表达式的支持。 ### 2. 邮箱地址验证 在实际应用中,经常需要...
正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助开发者进行复杂的字符串搜索和替换。在JavaScript中,正则表达式被广泛应用于字符串操作、表单验证、数据提取等多种场景,其简洁性和灵活性使其...
正则表达式是一种强大的文本处理工具,用于模式匹配、搜索、替换等操作,在软件开发、数据处理、网络爬虫等领域有着广泛的应用。在项目中直接使用正则表达式可以极大地提高代码的效率和可读性。以下是对给定文件中的...
正则表达式,全称Regular Expression,是一种强大的文本处理工具,尤其在数据挖掘、文本匹配、搜索替换等方面有着广泛的应用。在IT行业中,熟练掌握正则表达式是提高工作效率的关键技能之一,尤其对于程序员和数据...
正则表达式是一种强大的文本处理工具,用于在字符串中匹配、查找、替换或提取符合特定模式的文本。正则表达式并非新概念,其起源可追溯到20世纪早期对神经网络的研究,由数学家Stephen Kleene提出,并在Ken Thompson...
在处理HTML文本时,正则表达式尤其有用,可以用来查找、替换或提取HTML标签及其内容。以下是对这个主题的详细阐述: 1. **基本正则表达式概念**:正则表达式是由字符和特殊符号组成的字符串,它们定义了一个模式,...
有时我们需要去除一段文本中的HTML标签,这时可以使用如下的正则表达式: ```javascript var htmlTagPatrn = /<(S*?)[^>]*>.*?|*?\/>/; ``` 该正则表达式用于匹配带有闭合标签的HTML片段。 ##### 2. 英文大小写验证...
- **JavaScript (JScript)**:JavaScript支持正则表达式的创建和使用,并提供了丰富的API来处理字符串匹配、搜索和替换等功能。 - **Visual Basic Script (VBScript)**:虽然功能相对有限,但VBScript同样支持基本的...
而“正则表达式”标签则强调了该工具的核心特性,即处理和验证正则表达式。 文件名称列表中的"TestRegExp"可能是这个工具的主程序或库文件,运行后即可启动正则表达式测试工具。通过这个工具,无论是初学者还是经验...