gpt4 book ai didi

javascript - AngularJS 过滤器去除某个正则表达式

转载 作者:行者123 更新时间:2023-11-30 00:19:50 25 4
gpt4 key购买 nike

我正在尝试制作一个 angularJS 过滤器,它将删除如下所示的时间戳:(##:##:##) 或 ##:##:##。

这是一个删除所有字母的过滤器:

.filter('noLetter', function()  {
//this filter removes all letters
return function removeLetters(string){
return string.replace(/[^0-9]+/g, " ");
}
})

这是我尝试制作一个删除时间戳的过滤器,但它不起作用,非常感谢帮助。

.filter('noStamps', function () {
return function removeStamps(item) {
return item.replace(/^\([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\)$/i, "");
}
})

我的目标是让它删除它找到的时间戳并且不在其位置留下任何内容。

根据评论中的问题进行编辑:时间戳在文本中,所以它会说“这是我在 21:20:20 尝试做的 21:20:22 的示例 21:20:19”

我希望过滤器将其转换为“这是我正在尝试做的事情的示例”。

最佳答案

你可以使用

/\s*\(?\b\d{2}:\d{2}:\d{2}\b\)?/g

参见 regex demo

三个要点:

  • ^(字符串开头)和$(字符串结尾) anchor 应该被移除,这样表达式就不再锚定,并且可以部分匹配输入文本。
  • 匹配所有出现的全局标志
  • 限制量词 {2} 以缩短正则表达式(使用速记类 \d 也有助于缩短它)
  • \)?\(?? 量词一起使用以匹配出现 1 次或 0 次的圆括号。
  • \s* 在开头“trim ”结果(因为前导空格匹配)。

JS 片段:

 
var str = 'this is an example (21:20:19) of what I am 21:20:20 trying to do 21:20:22';
var result = str.replace(/\s*\(?\b\d{2}:\d{2}:\d{2}\b\)?/g, '');
document.getElementById("r").innerHTML = result;
<div id="r"/>

关于javascript - AngularJS 过滤器去除某个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33583998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com