簡體   English   中英

正則表達式組可選

[英]Regex Group Optional

我有以下正則表達式無法正常運行。

("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2-4})?$");

我正在嘗試匹配一個以2或4位數字開頭,后跟一個句點,然后是2位數字,然后可選地另一個句點和2或4位數字開頭的字符串。

我希望33.44.4444可以正常工作,就像33.33一樣,但是只要我有一個帶有第二個句點的字符串,我的表達式就會失敗。

我究竟做錯了什么 ?

您的正則表達式除{2-4}部分外,對您要執行的操作是正確的,如果您使用{2,4},它將捕獲您要查找的2至4個字符。

("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2,4})?$");

希望能幫助到你。

正如其他人指出的那樣,語法{2-4}是不正確的。 使用{2,4}指定出現范圍。 而且,如果您只想要2或4(而不是3),則可以使用此正則表達式:

@"^(\d{2}|\d{4})\.\d{2}(\.(\d{2}|\d{4}))?$"

您可以使用此正則表達式:

^\d{2}(?:\d{2})?\.\d{2}(?:\.\d{2}(?:\d{2})?)?$

\\d{2-4}將在字面上匹配{2-4}文本。

正則演示

您在表達式的第一部分中表達“兩位或四位數字”的方式是正確的:

\\d{2}(?:\\d{2})?

第二部分做錯了:

(\\.\\d{2-4})?

將第一部分復制到第二部分中以解決問題:

("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2}(?:\\d{2})?)?$");

演示

暫無
暫無

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

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