我的项目中有一个要求,即我们要有一些输入框,并且应该输入时间。

可以采用任何格式输入时间,例如12:30a或1230或1430或14:30。

以1230或1430格式输入的计时的问题是我无法通过Data.parse('1230')正确地解析它们。我必须解析将它们转换为日期对象的时间,以便我可以对它们执行更多的操作。

因此,为此要求我必须在这些时间之间输入一个冒号.IE将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})-匹配数字匹配1次的捕获组。将匹配例如。 “ 2”
/-正则表达式的结尾-也是我们修饰符的分隔符
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


DEMO

关于javascript - 将冒号分隔符插入到时间中(即将1230a转换为12:30a和1430转换为14:30),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28876076/

10-13 04:59