我需要知道创建这样的静态正则表达式对象是否安全:

public static Regex s_Regex_ExtractEmails = new Regex(@"\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b");

并从ASP静态调用它.NET线程,如下所示:

s_Regex_ExtractEmails.Matches("my email is mail@email.com")

这会引起什么问题吗?

我这样做基本上是作为一种优化,以便可以预编译和重用Regex对象.

推荐答案

是的,Regex个对象是线程安全的.从the docs开始:

Regex类是不可变的

您可能也想考虑使用RegexOptions.Compiled -虽然不assume,它将有助于性能;测量

Asp.net相关问答推荐

系统日期时间?与 System.DateTime

在 EF4.1 中正确地从上下文中附加和分离实体

在构建时自动停止/重新启动 ASP.NET 开发服务器

如何以编程方式获取会话 cookie 名称?

在属性中实现逻辑是一种好习惯吗

如何设置asp.net身份cookie过期时间

如何配置 ELMAH 以使用 Windows Azure?我在 Elmah.axd 上得到 404

在 ASP.NET MVC 中使用 Razor 创建可重用的 HTML 视图组件

与 Twitter Bootstrap Bundle 的 ASP.NET MVC4

如何在 ASP.Net 网络表单中使用标签?

VS2017 无法加载文件或程序集 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 或其依赖项之一

如何在 asp.net 中更改 DataBinder.Eval 的日期格式?

Web API 必填参数

捕获的异常本身为 null !

避免将重复元素添加到列表 C#

如何获取部署在 Azure 网站上的 ASP.NET 5 应用程序的错误详细信息?

使用 Web.Config 转换的高级任务

在 ASP.NET 标识中添加角色

ASP.NET 5 (vNext) - 获取配置设置

获取 POST 变量