簡體   English   中英

C#無效的文字字符

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM