2010-07-16 88 views
1

我在寫一個使用正則表達式來匹配傳入數據的程序。正則表達式適用於我正在編寫的計算機上,但它不適用於我正在測試的客戶端計算機。它可以在我的電腦上以調試模式,釋放模式運行,並直接從箱中運行。什麼可能使正則表達式工作不同?正則表達式在不同的計算機上的工作方式不同

正則表達式:

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

可執行文件在兩臺機器上的版本是否完全相同? – 2010-07-16 16:04:13

+1

是的,可執行文件。但是這讓我想到了......我意識到正則表達式在*庫*中,這是不一樣的。我將它們切換出來,它工作得很好。 ** D'oh ** – dlras2 2010-07-16 16:13:11

回答

6

也許你需要CultureInvariant:

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

截至Performing Culture-Insensitive Operations in the RegularExpressions Namespace解釋的,默認情況下將t不區分大小寫的匹配考慮了Thread.CurrentCulture

+0

從技術上講,這不是我的問題,但對我的問題來說這是一個很好的答案。 – dlras2 2010-07-16 16:14:05