2016-05-13 85 views
1

我需要一個匹配包含「[S]」的文本的正則表達式模式。我試過這樣的事情:RegularExpressionAttribute的正則表達式必須包含「[S]」文本

^(?\\[S\\]$)$ 

但它不工作。 我該如何做到這一點?

編輯:

正則表達式的目的是用它作爲客戶端驗證正則表達式:

[RegularExpression("\\[S\\]", ErrorMessage = "The field must contain '[S]'.")] 

但是,這是行不通的。因爲只有當字段是「[S]」時纔有效。

+1

如果將正則表達式錨定到字符串的開頭和結尾,只有當字符串正好是「」時,才應刪除錨點「[S]」'將匹配。 – Gusman

+0

我試過'(?\\ [S \\])'但是這給了我一個ArgumentException。 – ajmena

+0

嗯,這是因爲「?」,刪除它 – Gusman

回答

10

我需要一個匹配文本的正則表達式,當它有文本「[S]」時。

爲什麼使用正則表達式來檢查文字?使用

if (str.Contains("[S]")) { ... } 

如果你需要它作爲一個正則表達式的一部分,使用

if (Regex.IsMatch(s, @"\[S\]")) ... 

UPDATE

我注意到,你想匹配包含的[S]有現場a RegularExpressionAttributeRegularExpressionAttribute需要完整的字符串匹配

因此,你需要

[RegularExpression(".*\\[S].*", ErrorMessage = "The field must contain '[S]'.")] 

注意,你沒有逃脫字符類之外的],它被視爲文字。 .*將匹配除換行符以外的零個或多個字符。如果您還需要匹配換行符,則可以使用"(?s).*\\[S].*"@"[\s\S]*\[S][\s\S]*"

+0

我需要正則表達式,因爲我打算將它用作正則表達式。對不起,之前沒有提及。 – ajmena

+0

太棒了,你有它,用'\ [S]'。如果你需要匹配完整字符串*的模式,只需添加錨點('^'以確保我們開始搜索字符串的開頭,而'$'確保我們在字符串的末尾): '@ 「^ \ [S] $」'。我忘了提及'''不必逃脫。 –

+0

@ajmena:您的問題現在是否已修復?我注意到你想匹配一個包含* [S]的字段*。 'RegularExpressionAttribute'需要完整的字符串匹配。 ?因此,**你需要'[RegularExpression(「。* \\ [S]。*」,ErrorMessage =「該字段必須包含'[S]'。」)]'**。 –

相關問題