求助一条正则

字符串可能是

单位是[年,月,星期,天,小时,分钟,秒];
我出来的时间是形如:
1年3星期1小时,
10月3天10小时4分钟
1天5小时6分钟12秒
数值是数字,单位就是上面的.

我想拿到第一级的,上面三个分别拿到'1年','10月','1天'

请问能用正则拿到吗?

阅读 1.8k
3 个回答

str.match(/^(\d+\D+)/)

"1年3星期1小时".replace(/(\d*.*?)\d.*/, "$1") //1年
"10月3天10小时4分钟".replace(/(\d*.*?)\d.*/, "$1") //10月
"1天5小时6分钟12秒".replace(/(\d*.*?)\d.*/, "$1") //1天

正则表达式是:/(\d(年|月|星期|天|小时|分钟|秒))(\d(年|月|星期|天|小时|分钟|秒))*/

匹配完成后取正则表达式中的第一个分组,也就是返回数组中的第二个元素:比如:

var result = '1年3星期1小时'.match(/(\d(年|月|星期|天|小时|分钟|秒))(\d(年|月|星期|天|小时|分钟|秒))*/);

console.log(result) //["1年3星期1小时", "1年", "年", "1小时", "小时", index: 0, input: "1年3星期1小时"]

result[1] //"1年"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题