Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个正则表达式会给这些额外的字符?_Javascript_Jquery_Angularjs_Regex - Fatal编程技术网

Javascript 为什么这个正则表达式会给这些额外的字符?

Javascript 为什么这个正则表达式会给这些额外的字符?,javascript,jquery,angularjs,regex,Javascript,Jquery,Angularjs,Regex,我正在做一个计时器,它可以计数。创建基准时间,然后计算现在和基准时间之间的差异 然后,我将其转换为一个日期,将其转换为一个字符串,并从中提取以秒、分钟和小时为单位的时间 代码如下所示: $scope.time = Date.now() - timeStart; // total elapsed time in ms $scope.date = new Date($scope.time); $scope.preDisplay = $scope.date.toUTCString(); $scope.

我正在做一个计时器,它可以计数。创建基准时间,然后计算现在和基准时间之间的差异

然后,我将其转换为一个日期,将其转换为一个字符串,并从中提取以秒、分钟和小时为单位的时间

代码如下所示:

$scope.time = Date.now() - timeStart; // total elapsed time in ms
$scope.date = new Date($scope.time);
$scope.preDisplay = $scope.date.toUTCString();
$scope.timeDisplay = $scope.preDisplay.match(/\d+:\d+:\d+/);
["00:00:00"]
问题是$scope.timeDisplay显示如下:

$scope.time = Date.now() - timeStart; // total elapsed time in ms
$scope.date = new Date($scope.time);
$scope.preDisplay = $scope.date.toUTCString();
$scope.timeDisplay = $scope.preDisplay.match(/\d+:\d+:\d+/);
["00:00:00"]
我不明白方括号和引号是从哪里来的。这是在angularjs中,如果我使用JS或JQuery,它们就不存在了

发生了什么?

匹配(
.match
)返回一个匹配元素数组。尝试使用第一个
0
th索引访问它:

$scope.timeDisplay = $scope.timeDisplay[0];

它来自于:
.match(/\d+:\d+:\d+/)


.match
返回一个匹配数组,在这种情况下,只需使用索引直接访问该数组:
$scope.timeDisplay[0]

它们根本不是多余的字符,因为值是一个数组,因为
match()
返回的是数组