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

时间:2014-12-12 16:22:05

标签: c# regex

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

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

2 个答案:

答案 0 :(得分:3)

.NET不喜欢转义的字符,在这种情况下不应该这样做,因为你可以通过在字符串前面加上&{39; @'来避免它们。字符:

[RegularExpression(@"^08.*$", ErrorMessage = "Error: Contains invalid characters")]

这应匹配任何以' 08'。

开头的字符串

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

答案 1 :(得分:1)

好像你想要这样的东西,

@"^08.*"

由于数字不是正则表达式特殊元字符,因此您无需像\\8\\0那样将其转义。

<强>解释

  • ^断言我们刚开始。
  • 0匹配数字零。所以第一个字符必须是0
  • 8匹配数字8.因此第二个字符必须为8
  • .*匹配任何字符零次或多次。 .是正则表达式中的一个特殊元字符,可以匹配任何字符。

^[08].*$匹配第一个字符为零或8的字符串。[08]匹配给定列表中的单个字符,即08^[08]*$匹配08,零次或多次。请注意,*会重复前一个令牌零次或多次,+会重复前一个令牌一次或多次。因此,这将与0808080之类的字符串相匹配,但不匹配089

之类的字符串