0

只是一个小问题:我试图让我的代码 JSLint 没有错误,但遇到了这个问题:

意外的“\d”。(在两个正则表达式中)

hourduration = parseInt(activity.endTime.replace(":\d\d", ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10);

minuteduration = (parseInt(activity.endTime.replace("(\d)?\d:", ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10)) / 60;

我可以做些什么来改进我的正则表达式,以便 jslint 对其进行验证?

谢谢!

解决方案:

hourduration = parseInt(activity.endTime.replace(/:\d\d/, ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10);

minuteduration = (parseInt(activity.endTime.replace(/(\d)?\d:/, ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10)) / 60;
4

1 回答 1

2

JSLint 希望您使用 RegExp 对象或/regex/“字符串”,而不是普通字符串:

// JSLint error
foo.match(':\d\d');
foo.match(RegExp(':\\d\\d'));

// no error
foo.match(/:\d\d/);
foo.match(new RegExp(':\\d\\d'));

编辑:所有示例都是有效的,但最后两个是使用正则表达式的官方方式。

于 2012-11-03T10:23:33.750 回答