[英]C# Invalid Literal Characters
我创建了一个有效的PCRE正则表达式(用于查找邮政信箱地址条目),该正则表达式正在C#中引发解析器错误。
该错误是由于“ \\”引起的。 和“ \\ s”字符。
错误是:“无效的文字字符”
这是正则表达式
^(?!.*p\.?o\.?\s+?box).*$
这是实现
[RegularExpression("^(?!.*p\.?o\.?\s+?box).*$", ErrorMessage = "We cannot ship to PO boxes")]
有人可以帮我这个忙吗?
谢谢
这是因为反斜杠。 将您的正则表达式作为逐字字符串文字。 双引号内的单反斜杠将被视为转义序列。
@"^(?!.*p\.?o\.?\s+?box).*$"
逐字字符串文字包含一个@字符,后跟一个双引号字符,零个或多个字符以及一个结束的双引号字符。 一个简单的例子是@“ hello”。 在逐字字符串文字中,定界符之间的字符逐字解释,唯一的例外是引号-转义序列。 特别是,简单的转义序列以及十六进制和Unicode转义序列不在逐字字符串文字中处理。 逐字字符串文字可能跨越多行。
由于反斜杠被视为转义字符,因此您需要将字符串作为逐字字符串:
@"^(?!.*p\.?o\.?\s+?box).*$"
或者,您需要放置两个反斜杠,而不是如下所示的一个:
"^(?!.*p\\.?o\\.?\\s+?box).*$"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.