我需要为字符串编写格式的正则表达式:"(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。
发布于 2017-05-19 19:37:28
这是另一个版本。项目之间所需的空间,订单不需要
^(?:(?:\b\ \b|^)?(?:(\d+y)|(\d+m)|(\d+d)))+或有命令要求
^(\d+y)?(?:(\b\ \b|^)(\d+m))?(?:(?:\b\ \b|^)(\d+d))?$它的每个项目都有自己的捕获组
发布于 2017-05-19 14:28:04
发布于 2017-05-19 15:00:56
^([0-9]+y\s?)?(((1[0-2])|([1-9]))m\s?)?((([12]?[0-9])|(3[01]))d)?$我相信有无数种方法可以改善这种情况,但这会使我们的时间不超过12个月或31天。
https://stackoverflow.com/questions/44072476
复制相似问题