簡體   English   中英

正則表達式空格字符不起作用

[英]Regular Expression Space character not working

我的Regex用於加拿大的郵政編碼,並且只允許使用有效的字母:
Regex pattern = new Regex("^[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][/s][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]$");
我遇到的問題是我想允許在每個集合之間放置一個空格,但是找不到要使用的正確字符。

正則表達式(\\ s)中的正斜杠而不是反斜杠。 以下正則表達式應該起作用。

@"^[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][\s][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]$"

Regexper

如果您只是在尋找空間,請使用\\s

要提供轉義序列字符\\ ,請在給定示例中使用@ verbitm文字字符,如下所示。

Regex pattern = new Regex(@"^[ABCEGHJKLMNPRSTVXY][0-9]\s[ABCEGHJKLMNPRSTVWXYZ[0-9]\s[ABCEGHJKLMNPRSTVWXYZ][0-9]$");

正如評論中指出的那樣,如果空格是可選的,則可以使用? 量詞如下。

Regex pattern = new Regex(@"^[ABCEGHJKLMNPRSTVXY][0-9]\s?[ABCEGHJKLMNPRSTVWXYZ[0-9]\s?[ABCEGHJKLMNPRSTVWXYZ][0-9]$");

使用\\s標記代替空格,而不使用/s

一些方便的工具來加速正則表達式的開發:

  • regexr.com幫助語法並提供實時測試
  • regexpr.com (是的,我知道:))使您的表情形象化。

根據其他答案...。

  • 使用\\s代替/s
  • 您無需將[\\s]放在方括號中,因為它已經暗示了完整的字符類。

也...

  • 在大多數語言中,您可能不想使用雙引號"..."作為正則表達式的定界符,因為這可能是在應用模式之前對\\s進行插值。 當然值得一試。
  • 使用尾隨的量詞\\s*\\s? 以允許該空間是可選的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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