首页 > 解决方案 > 正则表达式测试空格分隔的字符

问题描述

我想制作一个验证“人类可读”时间格式的正则表达式,它应该如下所示:

1w 1d 1h 1m

并且接受的时间单位是(区分大小写):

每个时间单位是可选的,最多只能存在一次,因此以下格式也应该是(例如):

这就是我到目前为止所尝试的:

/((\dw) (\dd) (\dh) (\dm))/i

上面的表达式将验证所有列表格式,但它会忽略时间单位之间的空格,我想让时间单位和另一个时间单位之间的空格是强制性的。

标签: javascriptregex

解决方案


const regex = /^(\d+w\s?)?(\d+d\s?)?(\d{1,2}h\s?)?(\d{1,2}m)?$/

const text = "1w 8d 1h 5m"

console.log(text.match(regex)["input"])

console.log(regex.test(text))

^(\d+w\s?)?(\d+d\s?)?(\d{1,2}h\s?)?(\d{1,2}m)?$

推荐阅读