我有一个复杂的正则表达式,用于帮助从用户输入中删除HTML。我知道.NET在某种程度上缓存了静态Regex调用,但是这个调用很大并经常使用,所以我希望它可以随意使用。
在网站项目中,我想在App_Code的帮助器类中将其定义为共享对象,例如:
App_Code中的AppHelper.vb:
Public Class AppHelper
Private Shared _rxRemoveHTML As New Regex("(<[\s\S]*?(style|script)[\s\S]*?>[\s\S]*?</[\s\S]*?(style|script)[\s\S]*?>)|<[^<>]*>|&#[0-9a-z]+;|&#|<|>|\\|`|\t", RegexOptions.IgnoreCase + RegexOptions.Multiline)
这将使应用程序的生命保持活力。
公共职能部门负责:
Public Shared Function RemoveHTML(ByVal sIn As String) As String
Return _rxRemoveHTML.Replace(sIn, "")
End Function
问题是,这是否是线程安全的,对于Web应用程序来说还不错?