Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript/jQuery删除字符串中的序号_Javascript_Jquery_Regex - Fatal编程技术网

使用Javascript/jQuery删除字符串中的序号

使用Javascript/jQuery删除字符串中的序号,javascript,jquery,regex,Javascript,Jquery,Regex,我正在开发一个网站,它使用事件列表小部件来获取当前事件。默认情况下,日期以序号显示(数字后的st/rd/th/nd,即“5月18日”)。我想使用Javascript/jQuery从每个事件中删除这些内容,以便它改为读取“5月18日” 起初,我有四个单独的脚本来删除其中的每一个,但我确信一定有一个更简单的方法——瞧,我发现了正则表达式 搜索过这个网站后,我发现了这个现场演示: 这正是我想要的,因此我将其与其他一些位(在表达式后面添加/g,以便它影响.msl_event_item的所有实例)结合起

我正在开发一个网站,它使用事件列表小部件来获取当前事件。默认情况下,日期以序号显示(数字后的st/rd/th/nd,即“5月18日”)。我想使用Javascript/jQuery从每个事件中删除这些内容,以便它改为读取“5月18日”

起初,我有四个单独的脚本来删除其中的每一个,但我确信一定有一个更简单的方法——瞧,我发现了正则表达式

搜索过这个网站后,我发现了这个现场演示:

这正是我想要的,因此我将其与其他一些位(在表达式后面添加/g,以便它影响.msl_event_item的所有实例)结合起来,尝试解决这个问题

$(document).ready(function() {
    var str = $(".msl_event_time").html();
    str.replace(/(\d+)(st|nd|rd|th)/g, "$1");
    console.log(str);
});
我真的认为这会起作用,我看不出有什么理由不起作用,但实际上我今天才发现正则表达式,脚本不是我最强的技能,我正在努力取得任何进一步的进展——无论我做什么,控制台上都会显示“5月18日-6月8日”

live站点位于此处,您可以看到完整的标记:

以及以下标记的简化版本:

EDIT:一开始肯定是不小心把错误的类放在了这里(msl_event_item而不是msl_event_time),所以现在我的响应正常了

<div class="event_item">
    <dd class="msl_event_time">
    18th May - 8th June
    </dd>
</div>

<div class="event_item">
    <dd class="msl_event_time">
    7th June
    </dd>
</div>

5月18日至6月8日
6月7日
本质上,我需要一个代码来删除每个事件项的序号我无法更改HTML标记-它是由内容管理系统的小部件生成的。代码如何工作对我来说并不重要,只要它使用Javascript或jQuery


有什么想法吗?

它正在运行

但是在
console.log()
之前,您没有分配“新的
str
值!”

$(文档).ready(函数(){
var str=$(“.msl_事件_时间”).html();
str=str.replace(/(\d+)(st | nd | rd | th)/g,“$1”);
console.log(str);
});


5月18日至6月8日
执行替换后,您没有对值进行任何操作。如果在执行替换时重新分配字符串(
str=str.replace(/(\d+)(st | nd | rd | th)/g,“$1”)
,您将在控制台中看到修改后的字符串。已经说过

jQuery使我们能够将回调函数传递给
.html()
。当您这样做时,回调函数的返回结果将成为集合中每个元素的新html:

$(文档).ready(函数(){
$('.msl_event_item').html(函数(v){
//在这个回调中,“v”是
//当前驻留在我们的元素中
返回v.替换(/(\d+)(st | nd | rd | th)/g,“$1”);
});
});

5月18日至6月8日
6月7日

您必须重新分配字符串,然后将元素内容设置为更新的值。下面是详细的版本,这里更好,但我想解释真正的错误。字符串是不可变的

$(文档).ready(函数(){
常量el=$(“.msl_事件_项目”);
el.每个(函数(){
让str=$(this.html();
//你需要重新分配到str!
str=str.replace(/(\d+)(st | nd | rd | th)/g,“$1”);
$(this.html(str)
});
});

5月18日至6月8日
6月7日

你只是错过了
str=
前面的
str.replace(/(\d+)(st | nd | rd | th)/g,“$1”)
@baao,非常模糊地相似,我不太可能帮助OP回答他们的问题。@George你看过我对重复的答案了吗?你能解释一下与这个答案有什么不同吗?(除了用replace替换padStart之外)这怎么可能是重复的?看看WARE,你会看到你的非常小的错误。;)到downvoter…你运行了该代码段吗?预期结果就在那里。抱歉,以前单击错误