我正在尝试解决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
JSFiddle:http://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
提前致谢。
答案 0 :(得分: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
答案 1 :(得分: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"]