javascript - 正则表达式测试空格分隔的字符
问题描述
我想制作一个验证“人类可读”时间格式的正则表达式,它应该如下所示:
1w 1d 1h 1m
并且接受的时间单位是(区分大小写):
- w几周
- d几天
- h几个小时
- m分钟
每个时间单位是可选的,最多只能存在一次,因此以下格式也应该是(例如):
- 1w 1d
- 1w 1h 1m
- 1d 1h 1m
- 1小时1米
- 1w 1m
这就是我到目前为止所尝试的:
/((\dw) (\dd) (\dh) (\dm))/i
上面的表达式将验证所有列表格式,但它会忽略时间单位之间的空格,我想让时间单位和另一个时间单位之间的空格是强制性的。
解决方案
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)?$
推荐阅读
- asp.net-mvc - 从 ADFS 3.0 重定向回来后,asp.net MVC 应用程序上的会话集丢失
- c# - 每隔指定次数将字符串值拆分为数组的更简单方法是什么?
- ios - 尝试通过情节提要参考打开视图控制器时崩溃
- javascript - 从 json 输出图像到测试,作为问题的补充
- python - fastq 文件中的异常写入错误:标题移动到第 4 行,即质量得分值行
- reactjs - 笑话:如何在 onChange 方法中更新模拟函数的值?
- python - 将列添加到依赖于现有列及其 qcut bin 值的数据框
- node.js - 是否有可能在 typedi 中调用 Container.get() 内的构造函数?
- android - 如何使用 NanoHttp 将文件从 web 上传到 android web 服务器
- ios - iTunes Connect - 未发送测试飞行邀请以进行内部测试