1

我正在尝试解决 RegExp 问题。我找到了 80% 的模式。如果有人帮助我剩下的 20% 会很有帮助。

例如字符串:

var str = "Digital Presentation;Stadium Seating (11:05 AM), (1:40), 4:30, 7:30, 10:50 PM"; 

到目前为止我的模式:

var patt = /[^0-9|:|,|\b\sAM\b|\b\sPM\b]/g;

为了:

var result = str.replace(patt, '');

我得到的是:

P 11:05 AM, 1:40, 4:30, 7:30, 10:50 PM

我想要的结果是:

11:05 AM, 1:40, 4:30, 7:30, 10:50 PM

JSF中: //jsfiddle.net/QzYwu/1/

我所需要的只是匹配 spaceAM 和 spacePM,而对于我的模式,它匹配所有出现的 P、A、M 和空格。

另一个字符串示例是:

Digital Presentation;Movies and Mimosas (11:00 AM)

我得到的模式是:

PM  M 11:00 AM

我喜欢得到的是:

11:00 AM

提前致谢。

4

2 回答 2

1

这部分是问题:

var patt = /[^0-9|:|,|\b\sAM\b|\b\sPM\b]/g;

它没有做你认为它正在做的事情。

在字符类中,它将删除除数字、冒号、管道、逗号、文字 \b、A、M 和 P 之外的所有内容

正确的基于正则表达式的代码是:

str = "Digital Presentation;Stadium Seating (11:05 AM), (1:40), 4:30, 7:30, 10:50 PM"
str.match(/\d{1,2}:\d{2}( +[AP]M)?/g).join(', ');
//=> 11:05 AM, 1:40, 4:30, 7:30, 10:50 PM
于 2013-11-04T13:55:11.620 回答
1

修复了 Danstahr 的正则表达式工作

var timereg = /[0-9]{1,2}:[0-9]{1,2}( \b(AM|PM))?/g

"Digital Presentation;Stadium Seating (11:05 AM), (1:40), 4:30, 7:30, 10:50 PM".match(/[0-9]{1,2}:[0-9]{1,2}( \b(AM|PM))?/g)
//=> ["11:05 AM", "1:40", "4:30", "7:30", "10:50 PM"]
于 2013-11-04T14:02:59.423 回答