Javascript 如何围绕‘;PM&x2019;和‘;上午’;一串?

Javascript 如何围绕‘;PM&x2019;和‘;上午’;一串?,javascript,jquery,regex,time,Javascript,Jquery,Regex,Time,我想用一个时间字符串来环绕AM或PM。例如: <span class="time">between 10:00AM and 14:00PM</span> 在上午10:00到下午14:00之间 变成: <span class="time">between 10:00<span class="suffix am">AM</span> and 14:00<span class="suffix pm">PM</span&g

我想用一个时间字符串来环绕AM或PM。例如:

<span class="time">between 10:00AM and 14:00PM</span>
在上午10:00到下午14:00之间
变成:

<span class="time">between 10:00<span class="suffix am">AM</span> and 14:00<span class="suffix pm">PM</span></span>
在上午10:00到下午14:00之间
有没有关于如何让replace方法执行此操作的线索?

我认为一个简单的replace()就可以了:

$('.time').each(function() {
  var newMarkup = $(this).html().replace(/AM/g, '<span class="suffix am">AM</span>')
                                .replace(/PM/g, '<span class="suffix pm">PM</span>');

  $(this).html(newMarkup);
});
$('.time')。每个(函数(){
var newMarkup=$(this.html().replace(/AM/g,'AM'))
.替换(/PM/g,“PM”);
$(this).html(newMarkup);
});

灵感来自:

你能将
am
/
pm
类名大写吗?在这种情况下,这将是一个解决方案:

$('.time').html(function(i, v) {
    return v.replace(/(AM|PM)/g, '<span class="suffix $1">$1</span>');
});
$('.time').html(函数(i,v){
返回v.替换(/(上午/下午)/g,“1美元”);
});

实时演示:

或者,您可以事先添加带有“后缀”类的跨度,然后测试标记中是否存在AM/PM,并在跨度上调用jQuery的addClass('AM')或addClass('PM')。@Marcel,我很高兴这是一个正则表达式。:)嗯,是的,你说得对但是
.replace('AM','AM','g')
不使用正则表达式,这相当昂贵(但可能JavaScript引擎内部使用了一个)。它是一个正则表达式!至少是/AM/g部件。如果你想让它不区分大小写,你可以添加一个i。例如/AM/gi将使其与AM或AM匹配。关于代价高昂的注释,我不会完全不同意——这就是为什么我提供了一个仅应用CSS类而不是操纵DOM的替代方案。