C# 正则表达式分析“^[\0\8]*$”-无法识别的转义序列\8

C# 正则表达式分析“^[\0\8]*$”-无法识别的转义序列\8,c#,regex,C#,Regex,我正在尝试编写一个正则表达式,它只接受0作为第一个值,接受8作为第二个值。我在分析^[\0\8]*$-无法识别的转义序列\8时出错 [RegularExpression("^[\\0\\8]*$", ErrorMessage = "Error: Contains invalid characters")] .NET不喜欢转义字符,在这种情况下不需要转义字符,因为可以通过在字符串前面加一个“@”字符来避免转义字符: [RegularExpression(@"^08.*$", ErrorMessa

我正在尝试编写一个正则表达式,它只接受0作为第一个值,接受8作为第二个值。我在分析^[\0\8]*$-无法识别的转义序列\8时出错

[RegularExpression("^[\\0\\8]*$", ErrorMessage = "Error: Contains invalid characters")]

.NET不喜欢转义字符,在这种情况下不需要转义字符,因为可以通过在字符串前面加一个“@”字符来避免转义字符:

[RegularExpression(@"^08.*$", ErrorMessage = "Error: Contains invalid characters")]
这应该匹配以“08”开头的任何字符串


您当前的正则表达式使用“[08]”,这与仅使用“08”完全不同,因为方括号创建的组允许您使用组中定义的任何字符。因此,它可能会接受一个字符串,该字符串带有'80'或'8088'等。

似乎您想要这样的字符串

@"^08.*"
因为数字不是正则表达式的特殊元字符,所以不需要像\\8或\\0那样对其进行转义

说明:

^声称我们处于起步阶段。 0与数字0匹配。所以第一个字符必须是0 8与数字8匹配。所以第二个字符必须是8 .*与任何字符零次或多次匹配。是正则表达式中与任何字符匹配的特殊元字符。
^[08].*$匹配第一个字符为零或8的字符串。[08]匹配给定列表中的单个字符,即0或8^[08]*$匹配0或8次,零次或多次。注意,*将重复前面的令牌零次或多次,+将重复前面的令牌一次或多次。因此,这将与0808080之类的字符串匹配,但与089不匹配。^08$有什么问题吗?为什么不在字符串之前使用@以减少混淆?^08$似乎起作用了。它与^[08]*$有何不同?正则表达式把我弄糊涂了。@MrBones我想你是指^08或^08.*$@dotNet OP说他想匹配从0开始然后是8的东西,这^[08]*$不匹配为什么要使用正则表达式?您可以简单地将您的输入与字符串08相等,它应该可以。没有?我看到了@something,但没有看到@something的原始字符串文字。我很抱歉,这是我的错别字。“@”字符应该在字符串开头的引号之前。