簡體   English   中英

perl正則表達式數字匹配

[英]perl regular expression digit match

執行以下正則表達式匹配以驗證日期是否為YYYY_MM_DD格式。 但是,如果我的值為2012_07_7,則正則表達式會給出錯誤消息。 根據正則表達式模式,日期部分和月份應為2位數字。 不知道為什么它不起作用。

if ($cmdParams{RunId} !~ m/^\d{4}_\d{2}_\d{2}$/)
{
  print "Not a valid date in the format YYYY_MM_DD";
}

您的正則表達式為日期部分指定了2位數字,如果要允許1位或2位數字,則應使用{1,2}而不是{2}

好吧,如果您查看自己擁有的數據: 2012_07_7 ,則可以看到該時段不是兩位數。

明顯。 您的模式要求最后一個數字塊應為兩位數,而您要提供1。因此,如果希望模式與該文本匹配,請嘗試以下操作:

if ($cmdParams{RunId} !~ m/^\d{4}_\d{2}_\d\d?$/)

我的解決方案: ^\\d{4}_(?:1[0-2]|0?[1-9])_(?:3[01]|[1-2]\\d|0?[1-9])$
此模式匹配:2000_12_01或2001_1_1或2001_02_1

暫無
暫無

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

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