我的项目中有一个要求,即我们要有一些输入框,并且应该输入时间。
可以采用任何格式输入时间,例如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/