C#无效的文字字符

时间:2015-06-15 17:00:43

标签: c# regex

我创建了一个有效的PCRE正则表达式(用于查找邮政信箱地址条目),它在C#中抛出了解析器错误。

错误是因为" \。"和" \ s"我模式中的人物。

错误是:"文字字符无效"

这是正则表达式

^(?!.*p\.?o\.?\s+?box).*$ 

以下是实施

[RegularExpression("^(?!.*p\.?o\.?\s+?box).*$", ErrorMessage = "We cannot ship to PO boxes")]

有人会帮我解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:7)

这是因为反斜杠。把你的正则表达式作为逐字字符串文字。双引号内的单反斜杠将被视为转义序列。

@"^(?!.*p\.?o\.?\s+?box).*$"
  

逐字字符串文字由@字符后跟双引号字符,零个或多个字符以及结束双引号字符组成。一个简单的例子是@"你好"。在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是quote-escape-sequence。特别是,简单的转义序列和十六进制和Unicode转义序列不会在逐字字符串文字中处理。逐字字符串文字可以跨越多行。

答案 1 :(得分:1)

因为反斜杠被视为转义字符,您需要将字符串作为逐字字符串:

@"^(?!.*p\.?o\.?\s+?box).*$"

或者你需要放两个反斜杠而不是像下面那样:

"^(?!.*p\\.?o\\.?\\s+?box).*$"