为什么这个正则表达式只在Safari上与角度失败匹配?

时间:2016-07-15 21:53:04

标签: javascript angularjs regex safari

我的 angular 项目中有以下代码。 Chrome和Firefox运行良好,但在Safary原因和例外。

var shour = "9:00:00 PM CDT";
var ehour = "12:00:00 AM CDT";

var conver_shour = shour.match(/^(\d+):(\d+)/)[0] + shour.match(/[AP][M]$/)[0];
var conver_ehour = ehour.match(/^(\d+):(\d+)/)[0] + ehour.match(/[AP][M]$/)[0];

console.log("shour: " + conver_shour); // The answer should be 09:00PM
console.log("ehour: " + conver_ehour); // The answer should be 12:00AM

我尝试在 jsbin plunkr jsfiddle 上运行,但有些事情失败了,我看不出是什么原因。

  

这是例外       错误:null不是对象(评估'shour.match(/ [AP] [M] $ /)')       $ EVAL @ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js:142:467       $适用@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js:143:193       https://cdnjs.cloudflare.com/ajax/libs/angular-ui-calendar/1.0.0/calendar.min.js:1:326       https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js:156:171

感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:1)

正则表达式:

/[AP][M]$/

希望在字符串的末尾找到AMPM ...但这些字符不会出现在字符串的末尾,因此match会返回{{ 1}}。尝试执行null会抛出异常。

您可能打算使用:

null[0]

/[AP]M/