2013-05-29 45 views
1

我有一個實體框架模型,我已經把一些驗證,特別是一個正則表達式接受字母數字,空格和一些標點符號。然而,當試圖添加斜槓'/'作爲可接受的字符時,它似乎允許一些額外的不可接受的字符(在本例中爲逗號)。實體框架正則表達式,斜槓但沒有逗號

表達式1:

[RegularExpression(@"[\w\s.()&'-]+", ErrorMessage = "Contains an illegal character")] 

這適用於除斜槓所有預期的字符(即不接受逗號,而且不接受斜槓)

表達式2:

[RegularExpression(@"[\w\s.()&'-/]+", ErrorMessage = "Contains an illegal character")] 

這現在接受斜槓(好),但現在也接受逗號(不希望)

表達式3:

[RegularExpression(@"[\w\s.()&'-\/]+", ErrorMessage = "Contains an illegal character")] 

試圖逃脫正斜槓。與experssion 2同樣的效果,接受斜線和逗號

這只是一些奇怪的轉義或類似的技巧,我需要做的? .Net正則表達式的一些副作用?我絕對有這樣的印象:「表達2」會接受斜線,但不是逗號,但這絕對不是這種情況。

回答

1

的 ' - ' 字符必須在字符類的最後一個字符,如果不是它定義了範圍的可接受的字符: -

+0

天才!爲什麼這不讓我投票給你不止一次? ... 非常感謝! – ChrisHDog

1
[\ W \ S()& '+ /。]'

這是因爲破折號,-。字符類中的破折號表示範圍,例如,a-z0-9。 (這是一個範圍,不是字典而是基於ASCII的,如果你看an ASCII table,你會看到一個逗號,(44)位於無向撇號'(39)和正斜槓/(47)之間, )。你需要把-作爲你的角色類的第一個或最後一個字符,因爲它不能被解釋爲一個範圍。

相關問題