2017-02-16 66 views
1

所以我有一個場如何修復試圖匹配的字母,數字,空格,下劃線1-100字符和短劃線

[RegularExpression(@"([A-Za-z0-9\-\_ ]+){1,100}"] 
    public string Name { get; set; } 

在正則表達式試圖匹配的字符串1我的C#正則表達式長度爲-100個字符,只包含字母,數字,下劃線,破折號和空格。

我正在異常

其他信息:解析 「([A-ZA-Z0-9-_] +){1100}」 - 無法識別轉義序列_。

我該如何解決這個問題?

+0

@叉車我從那裏直接從http://stackoverflow.com/questions/2338044/regex-letters-numbers-dashes-and-underscores – TrumpPence2016

+0

你不需要'('和')'和轉義所有。使用'[RegularExpression(@「[A-Za-z0-9-_] {1,100}」]' –

+0

請注意'[]'中的連字符可能表示一個範圍,但是在一個範圍之後它不能定義另一個範圍,所以,您可以在不移動連字符的情況下刪除所有轉義符號,但最好將連字符放在字符類的開始/結尾處 –

回答

2

試試這個(下劃線之前擺脫反斜槓):

[RegularExpression(@"([A-Za-z0-9\-_ ]+){1,100}"] 
public string Name { get; set; } 
1

您需要刪除所有逃走了+,這是明智把連字符的字符類的末尾刪除任何歧義:

[RegularExpression("[A-Za-z0-9_ -]{1,100}"] 

由於RegularExpressionAttribute圖案總是隱式錨定,也沒有必要在末處加入在前面^$[A-Za-z0-9_ -]{1,100}將匹配由1到100個字符組成的字符串,它們是ASCII字母,數字,_空格或-

+0

另一個想法是使用'\ w',但是如果在服務器端運行,它可以匹配比ASCII字母/數字多的多個''[RegularExpression(@「[\ w - ] {1,100}」]' –

相關問題