我需要为格式化字符串编写正则表达式:"(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
。
答案 0 :(得分:2)
这是另一个版本。物品之间所需的空间,不需要订单
^(?:(?:\b\ \b|^)?(?:(\d+y)|(\d+m)|(\d+d)))+
或者需要订单
^(\d+y)?(?:(\b\ \b|^)(\d+m))?(?:(?:\b\ \b|^)(\d+d))?$
它自己的捕获组中的每个项目
答案 1 :(得分:1)
答案 2 :(得分:0)