我正在尝试编写一个正则表达式,它只接受0作为第一个值,8作为第二个值。我收到错误“解析”^ [\ 0 \ 8] * $“ - 无法识别的转义序列\ 8。”
[RegularExpression("^[\\0\\8]*$", ErrorMessage = "Error: Contains invalid characters")]
答案 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]
匹配给定列表中的单个字符,即0
或8
。 ^[08]*$
匹配0
或8
,零次或多次。请注意,*
会重复前一个令牌零次或多次,+
会重复前一个令牌一次或多次。因此,这将与0808080
之类的字符串相匹配,但不匹配089