У меня есть сложное регулярное выражение, которое используется, чтобы помочь убрать HTML из пользовательского ввода.Я знаю, что .NET кеширует статические вызовы Regex в некоторой степени, но этот большой и часто используется, поэтому я хотел бы, чтобы он зависал.
В проекте веб-сайта мне бы хотелосьчтобы определить его как общий объект, внутри вспомогательного класса в App_Code, например:
AppHelper.vb в App_Code:
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
Вопрос в том, безопасен ли этот поток и в остальном ли он подходит для веб-приложения?