Regex在不同的计算机上的工作方式不同

时间:2010-07-16 15:45:39

标签: c# .net regex windows-xp

我正在编写一个使用正则表达式来匹配传入数据的程序。正则表达式在我正在编写的计算机上工作,但它在我正在测试的客户端计算机上不起作用。它可以在我的计算机上以调试模式,发布模式运行,并直接从垃圾箱运行。什么可能使正则表达式的工作方式不同?

正则表达式:

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"

1 个答案:

答案 0 :(得分:6)

可能你需要CultureInvariant:

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

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