[英]Regular expression *y *m *d
我需要為格式化字符串編寫正則表達式:“(number_of_years)y(number_of_months)m(number_of days)d”。 字符串的每個部分都是可選的,應該用一個空格分隔。 我的變種:
/([0-9]+y\s)?([0-9]+m\s)?([0-9]+d)?/
不好,因為它只需要輸入字符串的第一部分或第二部分就需要增加空間。 良好字符串的示例:
"125y"; "36m"; "8d"; "125y 8d"; "125y 36m"; "36m 8d"; "125y 36m 8d".
不應該允許在字符串末尾輸入空格: *y; *m; *y *m
*y; *m; *y *m
*y; *m; *y *m
。
這是一個替代版本。 物品之間所需的空間,不需要訂單
^(?:(?:\b\ \b|^)?(?:(\d+y)|(\d+m)|(\d+d)))+
或者需要訂單
^(\d+y)?(?:(\b\ \b|^)(\d+m))?(?:(?:\b\ \b|^)(\d+d))?$
它自己的捕獲組中的每個項目
^([0-9]+y\s?)?(((1[0-2])|([1-9]))m\s?)?((([12]?[0-9])|(3[01]))d)?$
我確信有一百萬種方法可以改善這一點,但這強制說不超過12個月或31天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.