Javascript 使用jQuery突出显示内容中的年份

Javascript 使用jQuery突出显示内容中的年份,javascript,jquery,css,ajax,Javascript,Jquery,Css,Ajax,使用jQuery我想突出显示字符串中的年份 我有一个简单的项目清单。我想用span 函数getyear(val){ return/\d{4}/.test(val)?val.replace(/^[^\d]*(\d{4})。*$/,'$1'):'Now'; } $(文档).ready(函数(){ jQuery(“li”)。每个函数(i、v){ $('li')。追加((i+1)+':\t'+getyear(v)+'\n'); }); }); 制造商:332 ZX 8985 Jimba 2017

使用
jQuery
我想突出显示字符串中的年份

我有一个简单的项目清单。我想用
span

函数getyear(val){
return/\d{4}/.test(val)?val.replace(/^[^\d]*(\d{4})。*$/,'$1'):'Now';
}
$(文档).ready(函数(){
jQuery(“li”)。每个函数(i、v){
$('li')。追加((i+1)+':\t'+getyear(v)+'\n');
});
});

  • 制造商:332 ZX 8985 Jimba 2017
  • 截至2017年22月T736日的制造商
  • 制造商:jackson T736 hub 2017-1958
  • 制造商Jimba Dummasa corey 2017
  • 制造商Jimba corey TCGH1922 2017

您使用的
regex
仅适用于日期字符串,而不适用于从文本中提取年份。请参见下面的解决方案,该解决方案适用于您,假设
年份始终位于字符串的末尾,且格式为4位数字。我已经提取了这一年,希望您现在就可以将其包装在
span

函数getyear(节点){
设val=node.text().trim();
让newspan='';
让newNode='';
让numbersOnly=val.replace(/[^0-9\-]+/g,“|”)
设numberrar=numbersOnly.split(“|”);
numberrarr=numberrarr.clean(“”);
forEach的编号(函数(v){
//log(v.match(/^\d{4}$/);
如果(v.length==4 | | v.length==9){
val=val.replace(v,“+v+”);
}
});
返回val;
}
Array.prototype.clean=函数(deleteValue){
for(var i=0;i
.my标签{
颜色:红色;
}

  • 制造商:332 ZX 8985 Jimba 2017
  • 截至2017年22月T736日的制造商
  • 制造商:jackson T736 hub 2017-1958
  • 制造商Jimba Dummasa corey 2017
  • 制造商Jimba corey TCGH1922 2017
一种厨房编码答案-


$('ul>li')。每个(函数(索引){
var text=$(this.text();
风险值年份=“”;
对于(i=text.length-1;i>text.length-5;i--){
年份+=文本[i];
}
年份=年份。拆分(“”)。反向()连接(“”);
如果(文本[i]=='-'){
年份=text.slice(i-5,i)+'-'+年份;
text=text.slice(0,text.length-9);
}否则{
text=text.slice(0,text.length-4);
}
$(this.html(文本+“”+年份+“”);
});

以下是一种可能的解决方案。 它检测年份,如果它是四位数,并且以1或2开头

$('.content li')。每个(函数(){
var-el、html、newHtml;
//当前元素
el=$(本);
//当前元素HTML
html=el.html();
//替换年份
newHtml=html.replace(/(1 | 2)\d\d\d(?=\s)?/g,函数(年){
返回“+年份+”;
});
html(newHtml);
});
正文{
字体系列:'Arial';
}
.年{
字体大小:粗体;
颜色:番茄;
}

  • 制造商:332 ZX 8985 Jimba 2017
  • 截至2017年22月T736日的制造商
  • 制造商:jackson T736 hub 2017-1958
  • 制造商Jimba Dummasa corey 2017
  • 制造商Jimba corey TCGH1922 2017
  • 2017年和2016年等多年都将被标记

$(文档).ready(函数(){
$('btnsb')。在('click',函数(){
var data1=“”;
var list_li=新数组();
var计数=0;
$('li')。每个(函数(索引){
var data=($(this.text()).trim();
var year=data.substr(data.lastIndexOf(“”)+.length.trim();
数据=“
  • ”+数据+”
  • ”; 数据=数据。替换(年“+”年“); 数据1+=数据; }); $('.content').html('
      '+data1+'
    '); }); });
    • 制造商:332 ZX 8985 Jimba 2017
    • 截至2017年22月T736日的制造商
    • 制造商:jackson T736 hub 2017-1958
    • 制造商Jimba Dummasa corey 2017
    • 制造商Jimba corey TCGH1922 2017

    工作不正常。若这一年是在弦的中间呢?另外,当有2倍的值时,它也不能正常工作。1995-2015@amit试着回答一个对我有帮助的问题。不在2017-1958年这样有价值的年份工作,我可以做到,但这不是我想要的。杰克:我刚刚更新了我的答案,做了你想做的,希望它能解决你的问题。嗨,谢谢你的努力,但还是不合适。在这种情况下,它不起作用:
  • 制造商2017-1958年jackson T736 hub
  • 好吧,我在开始时说,我假设这一年是最后一年,如果它将在世界上任何地方。要做到这一点真的很难。你必须限制一些事情,至少每年在你所有的公司里的某个特定地点
    <script type="text/javascript">
    $('ul > li').each(function(index) {
        var text = $(this).text();
        var year = '';
        for (i = text.length - 1; i > text.length - 5; i--) {
            year += text[i];
        }
        year = year.split("").reverse().join("");
        if (text[i] === '-') {
            year = text.slice(i - 5, i) + '-' + year;
            text = text.slice(0, text.length - 9);
        } else {
            text = text.slice(0, text.length - 4);
        }
    
        $(this).html(text + '<span>' + year + '</span>');
    });
    </script>