作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的项目中有一个要求,我们有一些输入框,我们应该输入时间。
时间可以以任何格式输入,即 12:30a 或 1230 或 1430 或 14:30 .
以1230 或 1430 格式输入的计时问题是我无法通过Data.parse(' 1230')。我必须解析时间以将它们转换为日期对象,以便我可以对它们执行更多操作。
所以对于这个要求,我必须在这些时间之间输入一个冒号。I.E 将 1230 转换为 12:30,将 1430 转换为 14:30。
我必须支持的时间:
12 小时:1230a,1230am,12:30a,12:30am
24 小时:1430,14:30
最佳答案
正如其他人提到的,您可以使用正则表达式 /\b(\d{1,2})(\d{2})/g
并将其替换为 $1: $2
。你要求一个解释,你这样做是完全正确的。
Javascript 代码:
var str = '430a';
var newStr = str.replace(/\b(\d{1,2})(\d{2})/g, '$1:$2');
console.log(newStr); // "4:30a"
正则表达式剖析:
/
- 正则表达式的开头 - 向 javascript 表明这是一个正则表达式 - 这需要在末尾重复\b
- 单词边界,表示空格、句点、逗号、字符串开头等 - 这意味着我们不匹配 b182
因为 b
不是边界(\d{1,2})
- 匹配数字匹配 1 到 2 次(包括两者)的捕获组。将匹配例如。 “2”和“24”(\d{2})
- 匹配数字的捕获组总是匹配 2 次。将匹配例如。 “30”/
- 正则表达式的结尾 - 它也是我们修饰符的分隔符g
- 我们的修饰符 - 这意味着我们将替换 任何 而不仅仅是第一个当我们用 $1:$2
替换时,这意味着“第一个捕获组 ($1
) 的内容,后跟一个冒号 (:
) >), 然后是第二个捕获组 ($2
) 的内容。
转换:
1430 -> 14:30
1230a -> 12:30a
1230am -> 12:30am
430a -> 4:30a
The year is 2015 -> The year is 20:15
123456 -> 12:3456
Blink182 -> Blink182 (untouched)
Blink 182 -> Blink 1:82
关于javascript - 将冒号分隔符插入计时(即将 1230a 转换为 12 :30a and 1430 to 14:30 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28876076/
我是一名优秀的程序员,十分优秀!