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