2016-05-13 43 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]'。”)]'**。 –

相关问题