Skip to main content
 首页 » 编程设计

c#之正则表达式在不同计算机上的工作方式不同

2024年01月29日27小虾米

我正在编写一个使用正则表达式来匹配传入数据的程序。正则表达式适用于我正在编写代码的计算机,但它不适用于我正在测试的客户端计算机。它在我的计算机上以 Debug模式、 Release模式运行,并直接从 bin 运行。什么可能会使正则表达式以不同的方式工作?

正则表达式:

const string _pattern 
    = @"^(?:\x02)?([A-Z])(ST)([WS])([1-9])([ AM])([ NSEWIO])([- ]\d{6})([ M])([1CPN])(\w)?(?:\x0D)?$"; 
static readonly Regex _regex 
    = new Regex(_pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled); 

字符串:

@"ASTS2MI-000020 C0" 

请您参考如下方法:

可能你需要 CultureInvariant:

static readonly Regex _regex 
    = new Regex(_pattern, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled); 

如 Performing Culture-Insensitive Operations in the RegularExpressions Namespace 所述, 默认情况下,不区分大小写的匹配会考虑 Thread.CurrentCulture。