[英]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.